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.

[参考译文] J784S4XEVM:访问 MCSPI0 寄存器时 R5F 锁定

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1583261/j784s4xevm-r5f-locks-up-when-accessing-mcspi0-registers

器件型号: J784S4XEVM

当我尝试从 mcu4_0 上运行的应用程序中读取 MCSPI 寄存器(例如 0x02100000 或 0x021[1-7]0000)时、R5F 似乎锁定。  
当我尝试使用 devmem2 读取相同的寄存器时、Linux 内核出现严重错误。  
我在做什么?  
devmem2_read_0x02170000_panic.txt 
谢谢、

Bruce

 

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

    您好:

    能否确认相应的模块已打开?

    假设您使用的是 MCSPI0、并且模块是否已通电并提供时钟? 如果没有、我们就无法读取这些寄存器。

    此致

    Tarun Mukesh

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

    k3conf 命令 k3conf dump device 376 的输出显示它未启用:

    k3conf dump device 376
    |------------------------------------------------------------------------------|
    | VERSION INFO                                                                 |
    |------------------------------------------------------------------------------|
    | K3CONF | (version 0.3-nogit built Fri Oct 06 12:20:16 UTC 2023)              |
    | SoC    | J784S4 SR1.0                                                        |
    | SYSFW  | ABI: 3.1 (firmware version 0x0009 '9.1.2--v09.01.02 (Kool Koala))') |
    |------------------------------------------------------------------------------|
    
    |--------------------------------------------------|
    | Device ID | Device Name       | Device Status    |
    |--------------------------------------------------|
    |   376     | J784S4_DEV_MCSPI0 | DEVICE_STATE_OFF |
    |--------------------------------------------------|
    
    

    我使用以下命令启用它:  

    k3conf enable device 376 

    之后 k3conf 转储设备显示它已启用、我能够转储相关的寄存器。
    我认为在 k3-j784s4-evm.dts 中添加以下内容足以启用 SPI 器件:

     

    &main_spi0 {
    	status = "okay";
    	pinctrl-0 = <&main_spi0_pins_default>;
    	pinctrl-names = "default";
    };
    

    因为这不起作用、所以我需要将哪些内容添加到设备树以确保其已启用?

    谢谢、

    Bruce

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

    您好:

    众所周知、模块启用后、可以访问寄存器。

    在 k3-j784s4-main.dtsi 中、您应该会看到 spi0 相关信息。如果在这里禁用、则会禁用它。

     

    	main_spi0: spi@2100000 {
    		compatible = "ti,am654-mcspi","ti,omap4-mcspi";
    		reg = <0x00 0x02100000 0x00 0x400>;
    		interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    		power-domains = <&k3_pds 376 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 376 0>;
    		status = "disabled";
    	};

    此致

    Tarun Mukesh

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

    尊敬的 Tarun:

    我更改了 k3-j784s4-main.dtsi、将状态设置为“oke":“:

    	main_spi0: spi@2100000 {
    		compatible = "ti,am654-mcspi","ti,omap4-mcspi";
    		reg = <0x00 0x02100000 0x00 0x400>;
    		interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    		power-domains = <&k3_pds 376 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 376 1>;
    		status = "okay";
    	};

    有趣的是、 当状态=“oke"时“时、k3-j784s4-evm.dtb 位于 k3-j784s4-evm.dts 中 、完全相同。  


    不幸的是,当我安装新的 k3-j784s4-evm.dtb 时, k3conf 转储设备 376 的输出仍然显示它未启用。
    我已将在电路板上运行以下命令的输出连接起来:

    dtc -Idtb -Odts /boot/dtb/ti/k3-j784s4-evm.dtb > /tmp/k3-j784s4-evm_curr.txt

    e2e.ti.com/.../k3_2D00_j784s4_2D00_evm_5F00_curr.txt

    谢谢、

    Bruce

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

    您好:

    您在此处使用的引导顺序和引导介质是什么? 它是定制板还是 EVM?

    您是使用 uboot 从 SBL 引导 Linux 还是组合应用? 您 是否也可以分享 SDK 版本?

    此致

    Tarun Mukesh

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

    尊敬的 Tarun:

    抱歉、我应该已经向您提供了这些信息。  
    我正在通过 U-Boot 从 SD 卡引导到 Linux、我使用 Linux SDK 09_01_00_06 RTOS PDK 09_02_00_05、这是在我们的定制电路板上。  

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

    更正、PDK 版本为 RTOS SDK 版本 09_02_00_05 中的 pdk_j784s4_09_02_00_30

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

    您好:

    没问题、感谢大家分享。 让我检查一下、然后返回给您。

    此致

    Tarun Mukesh

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

    哦、太伦、你还没有发现什么? 如果您还需要我提供任何详细信息、请告诉我。

    此致、

    Bruce

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

    您好 Bruce、

    Linux 实现了 PM(电源管理)功能、很可能这就是器件关闭的原因。

    若要确认、可以使用 SPI 接口启动事务、并且在传输过程中、可以使用 k3conf 检查器件状态。

    或者、也应该提供/sys/devices/platform/..... 在 sysfs 中写入/power/control 并将“on"写入“写入此设置应该会禁用自动暂停(控件的默认状态应该是“auto")“)。 也可以设置 udev 规则来永久打开它。

    此致、

    Takuma

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

    感谢您的答复。 我有一 段时间不能尝试这个,但当我这样做时,我会试图让你知道结果

    此致、

    Bruce

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

    您好 Bruce、

    好的、明白。 将等待结果。

    此致、

    Takuma