rk3568can设置异常

板子:rk3568
平台:android11

1.问题描述
设备树中can的配置:

	can1: can@fe580000 {
		compatible = "rockchip,canfd-1.0";
		reg = <0x0 0xfe580000 0x0 0x1000>;
		interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru CLK_CAN1>, <&cru PCLK_CAN1>;
		clock-names = "baudclk", "apb_pclk";
		resets = <&cru SRST_CAN1>, <&cru SRST_P_CAN1>;
		reset-names = "can", "can-apb";
		tx-fifo-depth = <1>;
		rx-fifo-depth = <6>;
		status = "disabled";
	};

...
&can1 {
	assigned-clocks = <&cru CLK_CAN1>;
	assigned-clock-rates = <150000000>;
	pinctrl-names = "default";
	pinctrl-0 = <&can1m1_pins>;
	status = "okay";
};

本来我想通过下面的命令来将can配置成换回模式测试一下can是否发送接收正常,结果出现:RTNETLINK answers: Invalid argument日志而且同过ifconfig命令也看到can没有开启,但是设置成正常模式就不会出现这种情况

+ ip link set can0 down
+ ip link set can0 type can bitrate 500000 loopback on
+ ip -details link show can0
3: can0: <NOARP,ECHO> mtu 72 qdisc noop state DOWN mode DEFAULT group default qlen 10
    link/can  promiscuity 0 
    can <LOOPBACK,FD> state STOPPED (berr-counter tx 0 rx 0) restart-ms 0 
	  bitrate 498322 sample-point 0.865 
	  tq 13 prop-seg 64 phase-seg1 64 phase-seg2 20 sjw 1
	  rockchip_canfd: tseg1 1..128 tseg2 1..128 sjw 1..128 brp 1..256 brp-inc 2
	  rockchip_canfd: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..256 dbrp-inc 2
	  clock 148500000numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 
+ ip link set can0 up
RTNETLINK answers: Invalid argument

下面是直接设置成正常收发模式的日志:

+ echo can0
+ grep can
+ result=can0 
+ ip link set can0 down
+ ip link set can0 type can bitrate 1000000 dbitrate 3000000 fd on
+ ip -details link show can0
3: can0: <NOARP,ECHO> mtu 72 qdisc noop state DOWN mode DEFAULT group default qlen 10
    link/can  promiscuity 0 
    can <FD> state STOPPED (berr-counter tx 0 rx 0) restart-ms 0 
	  bitrate 1003378 sample-point 0.743 
	  tq 13 prop-seg 27 phase-seg1 27 phase-seg2 19 sjw 1
	  rockchip_canfd: tseg1 1..128 tseg2 1..128 sjw 1..128 brp 1..256 brp-inc 2
	  dbitrate 2970000 dsample-point 0.720 
	  dtq 13 dprop-seg 8 dphase-seg1 9 dphase-seg2 7 dsjw 1
	  rockchip_canfd: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..256 dbrp-inc 2
	  clock 148500000numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 
+ ip link set can0 up

于是我更改了设备树不用canfd,将其改成正常的can


	can1: can@fe580000 {
		compatible = "rockchip,can-1.0";//"rockchip,canfd-1.0";
		reg = <0x0 0xfe580000 0x0 0x1000>;
		interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru CLK_CAN1>, <&cru PCLK_CAN1>;
		clock-names = "baudclk", "apb_pclk";
		resets = <&cru SRST_CAN1>, <&cru SRST_P_CAN1>;
		reset-names = "can", "can-apb";
		tx-fifo-depth = <1>;
		rx-fifo-depth = <6>;
		status = "disabled";
	};
	...
	&can1 {
	assigned-clocks = <&cru CLK_CAN1>;
	assigned-clock-rates = <150000000>;
	pinctrl-names = "default";
	pinctrl-0 = <&can1m1_pins>;
	status = "okay";
};

打印:

+ ip link set can0 down
+ ip link set can0 type can bitrate 500000 loopback on
+ ip -details link show can0
3: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
    link/can  promiscuity 0 
    can <LOOPBACK> state STOPPED (berr-counter tx 0 rx 0) restart-ms 0 
	  bitrate 501689 sample-point 0.750 
	  tq 498 prop-seg 1 phase-seg1 1 phase-seg2 1 sjw 1
	  rockchip_can: tseg1 1..16 tseg2 1..8 sjw 1..4 brp 1..128 brp-inc 2
	  clock 148500000numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 
+ ip link set can0 up

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值