在TI sam3354芯片上,使用3.13及4.19版内核,编译CAN驱动,加载启动后,查看有CAN设备,但无法直接使用ifconfig操作CAN设备,以下简单分析下问题。
加载驱动后,查看网络设备:
可以看到有两个CAN设备,CAN0和CAN1,但ifconfig启动网络设备,提示:
如上,无法直接ifconfig CAN0 启动,对照newbing和chatgpt的说明,配置波特率:
ip link set can0 type can bitrate 500000
还是有问题,Newbing分析可能是驱动有问题或phy有问题。
找另外一台设备,启动后,查看ifconfig命令,可以查看到CAN0设备,没有CAN1设备,当关闭CAN0设备后,再启动CAN0,是可以的,但卸载驱动后再加载,也会失败。过程如下所示:
启动CAN1失败,关闭CAN0,再打开正常
将CAN驱动移除,之后再启动,如下:
一样也会失败,看调试信息,也该就是没有设置速率,但使用chatgpt提供的命令,会返回失败(应该和改版本的内核有关),最后,直接使用一个测试程序,启动CAN0和CAN1,设置波特率,就可以正常了,如下:
命令调试:
总结:
linux系统中,CAN是一种网络设备,CAN接口需要先配置波特率才可以启动,配置波特率方式和内核有关,使用系统程序接口程序更简单。