NXP MCU 技术论坛
直播中

刘波

8年用户 1039经验值
私信 关注
[问答]

请问如何在运行时转储S32G上的SJA1110 MAC表?

目前,我的项目正在对我的应用程序使用 S32GRDB2 上的 SJA1110(运行 linux OS - BSP 42)。默认情况下,我在设备树中使用设置(1 - 下图),而不是使用 DSA 并使用 S32DS 进行配置。这使得我无法在运行时使用 switchdev 命令控制 switch 以转储 SJA1110 的 MAC 表。


所以,我想问一个问题“如何在运行时转储 MAC 表,有什么机制或方法吗?因为当我使用设置(1)时,当板子启动时,只有 sja1110 内核模块(负责加载静态配置,不再做任何事情),并且没有任何工具或内核模块可供我交互。


回帖(1)

李莉

2025-3-3 11:52:46

在静态配置的SJA1110环境中转储MAC表,可尝试以下方法:




方法一:通过内核调试接口




  1. 检查sysfs节点

    查看 /sys/kernel/debug/sja1110/ 是否存在调试接口:


    ls /sys/kernel/debug/sja1110/

    如果有类似 mac_table 的文件,直接读取:


    cat /sys/kernel/debug/sja1110/mac_table



  2. 动态启用调试输出

    加载内核模块时启用调试日志:


    insmod sja1110.ko debug=1
    dmesg | grep sja1110

    观察日志中是否包含MAC表更新信息。






方法二:直接SPI寄存器访问


需SJA1110数据手册支持




  1. 安装SPI工具

    使用 spidevspi-tools


    apt-get install spi-tools



  2. 发送读取命令

    假设MAC表寄存器地址为 0x400,通过SPI读取:


    echo -ne "x04x00x00x00" > /tmp/cmd.bin  # 假设为32位读命令
    spi-config -d /dev/spidev0.0 -m 0 -l 32 -s 10000000
    spi-pipe -d /dev/spidev0.0 -c 4 < /tmp/cmd.bin | hexdump -C

    需根据实际寄存器布局调整命令格式






方法三:临时启用DSA支持



  1. 修改设备树

    在设备树中启用 dsa 节点并重新编译:
    &switch {
       compatible = "nxp,sja1110a";
       dsa,member = <0 0>;
       status = "okay";
    };

    加载DSA驱动后使用标准工具:


    bridge fdb show dev sw0p1




方法四:使用NXP私有工具


联系NXP获取专用调试工具(如 sja1105-tool 的适配版本):


./sja1105-tool mac-table show



注意事项



  • 寄存器操作风险:直接操作SPI可能影响网络功能,建议在非生产环境测试。

  • 内核版本兼容性:BSP 42的驱动可能限制功能,确认是否有官方补丁。

  • 替代方案:若MAC表静态配置,可直接从设备树或配置文件中提取预配置项。


如上述方法不可行,建议联系NXP技术支持提供具体寄存器定义或驱动扩展方法。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分