Can failed after flash pcie endpoint

Hi, WayneWWW
The way to reproduce this problem is very simple. You only need to connect CAN0 with RP mode Xavier and EP mode Xavier, and the phenomenon I mentioned will occur. EP mode Xavier cannot send and receive CAN data.
At the same time, I will confirm whether the problem is caused by the PCIE EP mode driver.
thanks.

Hi,

Sorry that I am actually getting more confused with your comment.

Do you mean we have to connect PCIe EP xavier to trigger this issue? This is same as what I asked previously.

Also, is the CAN send/receive between two Xavier? The “real device” on CAN is actually another CAN TX/RX pin on another Xavier?

Hi, WayneWWW
Yes, the issue can only be triggered in PCIE EP mode, and your understanding is correct.
Perhaps I didn’t express myself clearly. What I meant was that I’m not sure if the problem is caused by the PCIE driver’s enabling or simply because the ODMDATA has been flashed.
Also, you are correct, another real CAN device is the Xavier in RP mode.
thanks.

Could you have a quick test with not connecting PCIe EP/RP directly but only connect CAN devices?

I mean you can flash the ODMDATA to enable PCIe EP but do not connect it to PCIe RP.

Hi, WayneWWW
Yes, I have tried using it this way. I connected a USB CAN generator, which can customize the CAN rate and has upper computer software to check CAN. When I communicate with EP mode Xavier using such a tool, the same error still occurs!
thanks.

Hi,

So could we make a summary of how to reproduce this issue? Did you reproduce it right after ODMDATA get flashed? Or even PCIe EP/RP device needs to be connected?

所以可以總結一下到底哪些要素才能複製到這個問題嗎? ODMDATA燒完就能直接複製到了嗎? 還是說pcie那邊一定也要有東西接著?

Hi, WayneWWW
Currently, it appears that the problem can be replicated by burning ODMDATA into it, and I believe it may be related to the clock source. What do you think?
thanks.

Hi, WayneWWW
I tried to test on the AGX Xavier devkit today, and the problem can also be reproduced. I think the reason is not that there is a hardware error in our custom carrier board.It could be a pure software bug.
thanks.

We are checking this internally. Will update later.

1 Like

Thank you very much, looking forward to your reply!

1 Like

Hi, WayneWWW,
Have any discoveries to share with me?

Hi HuangZeng,

Could you help to provide the detailed reproduce steps for the devkit?

It seems the loopback test works fine but you would get the issue with connecting a real CAN device.
Could you help to provide how you connect the real CAN device on the devkit?
Do you refer to the following instruction to use CAN transciever?
Controller Area Network (CAN) — Enabling CAN

Hi, KevinFFF
Have you tested it? , I use CAN phy to transmit CAN signal and connect usb can device.
thanks.

Yes, we are testing loopback test for CAN send/dump, and it works fine.
We don’t have CAN device to reproduce, it seems that you need CAN transceiver for your CAN device.

Hi, KevinFFF
I have a way for you guys to replicate our conclusions without other CAN devices, please follow the steps below

  1. Prepare two AGX devkits, and flash one of them to EP mode
    (ps: No need to change its hardware circuit, because we don’t need to use this PCIE function here)

  2. Use the CAN transceiver to connect the CAN0 interfaces of the two AGX devikit together. At this time, configure the CAN0 through the document you provided, including the baud rate, whether CANFD is enabled, etc. Please configure both sides in the same format .

  3. Use cansend and candump to send CAN messages on any AGX Xavier devikit, you will find that CAN messages cannot be sent and received normally

thanks.

Hi HuangZeng,

Sorry for the late reply, we took some time to get CAN transceiver board.

I’ve verified it could work with R35.3.1 on AGX Xavier devkit no matter PCIe RP or EP mode.

My reproduce setups are as following:

  1. Prepare an AGX Xavier devkit, flash R35.3.1 with EP mode (by setting ODMDATA=0x9191000)

  2. Connect CAN0 and CAN1 as the instruction from developer guide, it may need two CAN transceivers.

  3. Use jetson-io to enable both can0 and can1

  4. Run the following commands to enable can bus

$ sudo modprobe can
$ sudo modprobe can_raw
$ sudo modprobe mttcan
$ sudo ip link set can0 up type can bitrate 500000 dbitrate 1000000 berr-reporting on fd on
$ sudo ip link set can1 up type can bitrate 500000 dbitrate 1000000 berr-reporting on fd on
  1. Run the following commands to send packet from CAN0 to CAN1
$ candump -x any &
$ cansend can0 123#abcdabcd
  can1  RX - -  123   [4]  AB CD AB CD
  can0  TX - -  123   [4]  AB CD AB CD

Could you refer to the above steps to verify with R35.3.1?

2 Likes

Hi, KevinFFF
I will update my system to test it.
Thanks.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.