2016-10-11 44 views
0

我有一個自定義編譯Linux 2.6在imx CPU上運行。與外部節點的CAN通信就像一個魅力,但在終端中使用「candump can0」時,我從我的應用程序發送到節點的幀不會打印(當我使用usb-CAN適配器在我的主機上運行相同的應用程序時這個問題不會發生)。imx上的Linux 2.6:不能使用candump記錄發送的CAN幀

當擴展CAN幀發送時,它們使用candump顯示出來。

我明白,發送的郵件可能會過濾方便,但我應該可以選擇。

歡迎任何線索。我在想,這可能是驅動程序導致此問題的一些過濾。

的個FlexCAN驅動程序有以下配置文件:

中止br_propseg dump_rx_mb環回狀態 喚醒BCC br_pseg1 dump_xmit_mb maxmb std_msg xmit_maxmb比特率br_pseg2
ext_msg模態boff_rec br_rjw FIFO功率TSYN br_clksrc驅動子系統 聽smp uevent br_presdiv
dump_reg local_priority srx_dis wak_src

回答

0

好吧,我一直在這個問題很多次,但放棄了。但是我知道我偶然發現了這個解決方案:

FlexCAN文件夾中名爲srx_dis的設置文件控制着這種行爲。 所以,如果你希望能夠讀取你的imx53_loco發送CAN幀,請執行下列操作:

ifconfig can0 down 
echo 0 > /sys/bus/platform/devices/FlexCAN.0/srx_dis 
ifconfig can0 up 

我想這樣做是相同的裝置,它可以創建一個服務工具的​​原因記錄所有CAN幀。

0

can-utils包需要SocketCAN,它已經集成到股票內核2.6.30中。

如果您使用的是SocketCAN,您應該能夠打開回送接收正在從您的接口傳輸的消息(並且他們必須實際上在通過回送接收的線路上傳輸)。

從慶典:

而在另一端:

cansend can0 00C0FFEE#00112233445566 
+0

使用的是FlexCAN。我試過了你的建議,但是這個命令沒有被識別,所以我沒有使用「echo 1> /sys/bus/platform/devices/FlexCAN.0/loopback」。結果是接收消息停止工作。我發現了一件奇怪的事情:如果我發送一個類似123#R的遠程請求幀,那麼這個信息就會被打印出來。 –