【问题标题】:socketCAN driver not working properly on embedded linuxsocketCAN 驱动程序在嵌入式 linux 上无法正常工作
【发布时间】:2022-07-27 06:33:20
【问题描述】:

我正在 zed 板上开发一个项目。我正在使用 Yocto 为我的 zed 板生成 linux 映像。我希望能够从用户空间控制 CAN 总线。 我一直在遵循这些指南: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842496/Linux+CAN+driver https://blog.mbedded.ninja/programming/operating-systems/linux/how-to-use-socketcan-with-the-command-line-in-linux/

我在设备树中启用了 PS 的 CAN,并通过 MIO 将其输出信号路由到外部引脚。

当我启动时,这是 dmesg 的输出:

[    1.764588] can: controller area network core (rev 20170425 abi 9)
[    1.775204] can: raw protocol (rev 20170425)
[    1.779457] can: broadcast manager protocol (rev 20170425 t)
[    1.785090] can: netlink gateway (rev 20170425) max_hops=1

然后我继续使用 ip 命令设置比特率,然后启动设备。

ip link set can0 type can bitrate 500000
ip link set up can0

Dmesg 现在显示:

[  118.504008] xilinx_can e0008000.can can0: bitrate error 0.0%

如果配置:

can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          UP RUNNING NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:22 

和ip地址:

2: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UNKNOWN group default qlen 10
    link/can 

现在我尝试从总线发送一些数据:

cansend can0 123#1122334455667788

Ifconfig 现在显示接口有错误:

can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          UP NOARP  MTU:16  Metric:1
          RX packets:22 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:21 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10 
          RX bytes:176 (176.0 B)  TX bytes:0 (0.0 B)
          Interrupt:22 

而 ip addr 显示接口已关闭:

2: can0: <NO-CARRIER,NOARP,UP,ECHO> mtu 16 qdisc pfifo_fast state DOWN group default qlen 10
    link/can 

如果我使用 ip 命令关闭接口,然后再次备份,dmesg 会显示:

[  378.643526] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready

我的逻辑分析仪连接到 zed 板上 CAN 引脚的 CANH 和 CANL 输出,使用 CAN 发送时我看不到任何活动。 我尝试在输出上启用上拉电阻,但没有帮助。

如果我启用环回模式,candump 会显示设备现在可以正确发送数据并将其接收回自身。以下是启用环回时 ip addr 显示的内容:

2: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP group default qlen 10
    link/can 

任何建议将不胜感激。

【问题讨论】:

    标签: driver embedded-linux xilinx zynq socketcan


    【解决方案1】:

    我正在尝试对在 petalinux 上运行的不同 FPGA 板(KV260)做同样的事情。我想知道您为调出 CAN 接口所做的更改。我总是收到找不到 can0 设备的错误。当我尝试运行命令 ip link set dev can

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2013-01-04
      • 1970-01-01
      相关资源
      最近更新 更多