器件型号:BEAGLEBN
您好!
我们将 BuildRoot 用于在 BeagleBone Black 上运行的 Linux。 到目前为止、我们使用了 BuildRoot 版本2014.11、并且能够使用两个 CAN 接口。 现在、我们决定升级到 lates BuildRoot LTS 版本2019.02。 当前的 BuildRoot 版本使用 TI Linux 版本4.14.40 (git://git.ti.com/processor-sdk/processor-sdk-linux.git 存储库版本:4796173fc58688055a99a1cef19a839174067220)。
在该版本中、我们无法使用两个 CAN 接口之一、因为 CAN0和 CAN1接口都不可用。 这些是我们到目前为止为启用 CAN 接口而执行的步骤:
我们在 AM335x-bonebblack.dts 中添加了以下行
am33xx_pinmux{ dcan0_pins_default:dcan0_pins_default{ pinctrl-single、pins =< AM33XX_IOPAD (0x978、PIN_OUTPUT_PLUP | MUX_MODE2) AM33XX_IOPAD (0x97C、PIN_INPUT_PULLUP | MUX_MODE2) >; }; Dcan1_PINS_DEFAULT:Dcan1_PINS_DEFAULT{ pinctrl-single、PINS =< AM33XX_IOPAD (0x980、PIN_OUTPLUP | MUX_MODE2)/* uart1_RxD.d_CAN1_TX* /&AM33XX_IOPAD (0x984、PIN_INPUT_MODEUP | MUX*= 0); 如果禁用*、则禁用* uart1;CAN1 = d1;CAN1 = docon1;CAN1 = d1;CAN1 = d1;CAN1;CAN1 CAN1 CAN1 CAN1 CANnocon1 = d1;CAN1;CAN1 CAN1 CANnocon1;CAN1 =禁用* pinctrl-names ="默认值"; pinctrl-0 =<&dcan0_PINs_default>; }; &dcan1{ status ="确定"; pinctrl-names ="默认值"; pinctrl-0 =<&dcan1_PINs_default>; };
我们启动了 CAN 驱动程序
modprobe can modprobe ca-dev modprobe ca-raw modprobe c_can
这是命令和 lsmod 的输出:
# modprobe can [49.778858] CAN:控制器局域网内核(版本20170425 ABI 9) [49.785835] NET:注册协议系列29 # modprobe ca-dev [55.454286] CAN 设备驱动程序接口 # modprobe ca-raw [61.789893] CAN:原始协议(版本20170425) # modprobe c_can 模块# lsmod 模块# 未被污染 的 c_can 使用的大小 20480 0 CAN_RAW 20480 0 CAN_DEV 24576 1 c_CAN 28672 1 CAN_RAW #
如果我们现在使用 ifconfig -a 列出所有接口、则 CAN0和 CAN1接口均不可用。
如果我们使用 BuildRoot 2014.11 (TI Linux 3.12存储库版本:7f280334068b7c875ade51f8f3921ab311f0c824)、则两个 CAN 接口都能正常工作。 这就是我们修改旧 AM335x-bonebblack.dts 的方式:
&am33xx_pinmux{ dcan1_pins_s0:dcan1_pins_s0{ pinctrl-single、pins =< 0x180 0x12 /* d_CAN1_TX、SLEWCTRL_FAST | INPULLUP | MODE2 * / 0x184 0x32 /* d_MO1_Rx、SLEWCTRL_FAST| }dcan0 |输入端口0 | dcan0_pullup | dcann0_pinu_pinuP |* 0 | dcann0_pinu_pinu_pinu_pinu_pinu_pinuels |* 0 | pinctrl-single、pins =< 0x178 0x12 /* d_CAN0_TX、SLEWCTRL_FAST | INPUT_PULLUP | Mode2 */ 0x17C 0x32 /* d_CAN0_Rx、SLEWCTRL_FAST | RECV_ENABLE | INPUT_PULLUP | Mode2 */ >; }; }; &Dcan1{ #address-cells =<1>; #size-cells =<0>; status ="确定"; pinctrl-names ="默认值"; pinctrl-0 =<&Dcan1_PINs_s0>; }; &Dcan0{ #address-cells =<1>; #size-cells =<0>; status ="确定"; pinctrl-names ="默认值"; pinctrl-0 =<&Dcan0_PINS_s0>; };
因此、我不知道我们在最新的 Linux 版本中缺少什么或做了什么错误? 您是否对我们错过了什么或我们正在做什么有任何想法?
谢谢、此致、
Uwe