Part Number: J722SXH01EVM
Hi Team,
We are enabling a minimal UDS-over CAN-FD Diagnostic PoC on TDA4VEN EVM. The current kernel configuration shows ISOTP not set. How to enable this?
Best Regards
Adding more details,
The current kernel configuration reports:
# CONFIG_CAN_ISOTP is not set
We would like to use Linux SocketCAN ISO-TP for a UDS server running on the A53.
We are using SDK version 11.02.01.03, kernel: Linux j722s-evm 6.12.57-ti-01381-g98bbe0d37952-dirty. MCAN interfaces available are mcu_mcan0, mcu_mcan1 and main_mcan0
Could you confirm:
1. Whether ISO-TP is supported and validated with the TDA4EN SDK kernel and MCAN driver.
2. The recommended procedure to enable CONFIG_CAN_ISOTP=m.Whether rebuilding only the kernel/module is sufficient.
3. Which kernel image, modules and device-tree artifacts must be deployed.
4. Whether there are known CAN-FD or ISO-TP limitations on this SDK release.
5. Whether TI instead recommends running CanTp/diagnostics on an R5F core for production applications.
6. Please also provide any applicable example, configuration fragment or patch.
PFB logs from EVM:
root@j722s-evm:/opt/vision_apps# cat /etc/os-release
ID=arago
NAME="Arago"
VERSION="2025.01"
VERSION_ID=2025.01
PRETTY_NAME="Arago 2025.01"
CPE_NAME="cpe:/o:openembedded:arago:2025.01"
root@j722s-evm:/opt/vision_apps# ip -details link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0 allmulti 0 minmtu 0 maxmtu 0 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 524280 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536
2: mcu_mcan0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
link/can promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
can state STOPPED (berr-counter tx 0 rx 0) restart-ms 0
m_can: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp_inc 1
m_can: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..32 dbrp_inc 1
clock 20000000 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536 parentbus platform parentdev 4e08000.can
3: mcu_mcan1: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
link/can promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
can state STOPPED (berr-counter tx 0 rx 0) restart-ms 0
m_can: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp_inc 1
m_can: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..32 dbrp_inc 1
clock 20000000 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536 parentbus platform parentdev 4e18000.can
4: main_mcan0: <NOARP,UP,LOWER_UP,ECHO> mtu 72 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
link/can promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
can <LOOPBACK,FD> state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 0
bitrate 500000 sample-point 0.875
tq 12 prop-seg 69 phase-seg1 70 phase-seg2 20 sjw 10 brp 1
m_can: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp_inc 1
dbitrate 2000000 dsample-point 0.750
dtq 12 dprop-seg 14 dphase-seg1 15 dphase-seg2 10 dsjw 5 dbrp 1
m_can: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..32 dbrp_inc 1
clock 80000000 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536 parentbus platform parentdev 20701000.can
5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 70:ff:76:1d:ec:e3 brd ff:ff:ff:ff:ff:ff promiscuity 0 allmulti 0 minmtu 60 maxmtu 1522 addrgenmode none numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536 parentbus rpmsg parentdev virtio3.ti.ethfw.ethdevice.-1.34
root@j722s-evm:/opt/vision_apps# zcat /proc/config.gz | grep -E 'CONFIG_CAN|CONFIG_CAN_ISOTP'
CONFIG_CAN=m
CONFIG_CAN_RAW=m
CONFIG_CAN_BCM=m
CONFIG_CAN_GW=m
# CONFIG_CAN_J1939 is not set
# CONFIG_CAN_ISOTP is not set
CONFIG_CAN_DEV=m
# CONFIG_CAN_VCAN is not set
# CONFIG_CAN_VXCAN is not set
CONFIG_CAN_NETLINK=y
CONFIG_CAN_CALC_BITTIMING=y
CONFIG_CAN_RX_OFFLOAD=y
# CONFIG_CAN_CAN327 is not set
# CONFIG_CAN_FLEXCAN is not set
# CONFIG_CAN_GRCAN is not set
# CONFIG_CAN_KVASER_PCIEFD is not set
# CONFIG_CAN_SLCAN is not set
# CONFIG_CAN_XILINXCAN is not set
# CONFIG_CAN_C_CAN is not set
# CONFIG_CAN_CC770 is not set
# CONFIG_CAN_CTUCANFD_PCI is not set
# CONFIG_CAN_CTUCANFD_PLATFORM is not set
# CONFIG_CAN_ESD_402_PCI is not set
# CONFIG_CAN_IFI_CANFD is not set
CONFIG_CAN_M_CAN=m
# CONFIG_CAN_M_CAN_PCI is not set
CONFIG_CAN_M_CAN_PLATFORM=m
# CONFIG_CAN_M_CAN_TCAN4X5X is not set
# CONFIG_CAN_PEAK_PCIEFD is not set
# CONFIG_CAN_SJA1000 is not set
# CONFIG_CAN_SOFTING is not set
# CONFIG_CAN_HI311X is not set
# CONFIG_CAN_MCP251X is not set
CONFIG_CAN_MCP251XFD=m
# CONFIG_CAN_MCP251XFD_SANITY is not set
# CONFIG_CAN_8DEV_USB is not set
# CONFIG_CAN_EMS_USB is not set
# CONFIG_CAN_ESD_USB is not set
# CONFIG_CAN_ETAS_ES58X is not set
# CONFIG_CAN_F81604 is not set
# CONFIG_CAN_GS_USB is not set
# CONFIG_CAN_KVASER_USB is not set
# CONFIG_CAN_MCBA_USB is not set
# CONFIG_CAN_PEAK_USB is not set
# CONFIG_CAN_UCAN is not set
# CONFIG_CAN_DEBUG_DEVICES is not set
root@j722s-evm:/opt/vision_apps# ethtool -i mcu_mcan0 2>/dev/null
driver: m_can_platform
version: 6.12.57-ti-01381-g98bbe0d37952-
firmware-version:
expansion-rom-version:
bus-info: 4e08000.can
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
root@j722s-evm:/opt/vision_apps#
Best Regards,
Reshma
Hi Reshma,
No, we have not validated ISO-TP support in our Linux SDK. However, it should be supported in kernel. The kernel driver comes from upstream Linux, since the J722S/TDA4VEN uses the Bosch CAN controllers which uses the Bosch kernel drivers, and upstream kernel has support for ISOTP. Should just be a configuration change to enable.
No known limitations for CAN for the particular SDK release. But please let us know if you encounter an issue while using MCAN. There is a FAQ that I update as issues become known, or when common issues are reported for custom board bringup: RE: [FAQ] TDA4VEN-Q1/AM6x/TDA4x/DRA8x: How to enable, troubleshoot, and debug MCAN, CAN-FD interface not working in Linux
Regards,
Takuma