This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BEAGLEBN:DCAN 设置问题

Guru**** 657930 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/851857/beaglebn-dcan-setup-issue

器件型号: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

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    是否可以附加(不剪切和粘贴)引导日志?  

    TI 不支持 BuildRoot、因此我不熟悉 TI SDK 内核和 DTS 文件的来源。 我想您正在尝试向我展示这些差异、但您能否在 BuildRoot 版本和 TI SDK 版本的电路板 DTS 之间附加差异? 正如我说过的、我不熟悉 BuildRoot、因此、如果这增加了混乱、可能是因为这些文件是从同一个 repo 中引用的、很抱歉。  

    因为和早期版本的工作方式比这表明硬件工作方式更有效。  

    此致、

    Schuyler

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢你的答复。 我已连接引导日志。 BuildRoot 使用标准的 TI SDK 内核、并使用内核中的默认 DTS 文件、而无需进行任何修改。 唯一的修改是我为启用 CAN 接口所做的更改。

    此致、

    Uwee2e.ti.com/.../3513.bootlog.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很抱歉耽误了时间、这条线似乎在某种程度上失去了。 您是否看不到与您移动到的 TI 内核的 CAN 接口?

    此致、

    Schuyler

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我无法看到与给定 TI 内核的任一 CAN 接口。 我不确定我对 DTS 文件的更改是否正确以启用 CAN 接口、或者是否需要执行任何其他步骤。 因此、如果:

    • 我会得到确认、在这个内核版本上、CAN 支持被中断
    • 或者、我可以获得一些信息、了解如何修改 DTS 以使知道可以正常工作的 CAN
    • 或获取一些信息、以及如何调试问题

    帮助会更好。

    谢谢、此致、

    Uwe