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.

[参考译文] PROCESSOR-SDK-AM64X:v10.01.10.04:遵循 AM64x Academy 时将 R5FSS0_0 SRAM 添加到器件树时出现问题

Guru**** 2529560 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1563525/processor-sdk-am64x-v10-01-10-04-problems-with-adding-r5fss0_0-sram-to-devicetree-when-following-am64x-academy

器件型号:PROCESSOR-SDK-AM64X


工具/软件:

我正在使用 AM64x Academy v10.01.00.00、并需要“分配内存“(在“修改要由 Linux 加载的远程内核应用“中)、建议向 Linux 器件树中添加 SRAM 分配。  

在 Yocto 设置(Linux RT 风格)中、我使用了“DevTool modify linux-ti-staging-rt“、并使用以下内容编辑了“k3-am642-sk.dts":“:

diff --git a/arch/arm64/boot/dts/ti/k3-am642-sk.dts b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
index 9ec2ad62efdd..00cd201377d1 100644
--- a/arch/arm64/boot/dts/ti/k3-am642-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
@@ -670,10 +670,17 @@ mbox_m4_0: mbox-m4-0 {
        };
 };
 
+&oc_sram {
+       main_r5fss0_core0_sram@80000 {
+               reg = <0x80000 0x40000>;
+       };
+};
+
 &main_r5fss0_core0 {
        mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
        memory-region = <&main_r5fss0_core0_dma_memory_region>,
                        <&main_r5fss0_core0_memory_region>;
+       sram = <&main_r5fss0_core0_sram>;
 };
 
 &main_r5fss0_core1 {

但是、运行 linux-ti-staging-RT 的构建将返回以下结果:

|   DTC     arch/arm64/boot/dts/ti/k3-am642-sk.dtb
| /home/tim/tisdk/build/workspace/sources/linux-ti-staging-rt/arch/arm64/boot/dts/ti/k3-am64-main.dtsi:918.35-931.5: ERROR (phandle_references): /bus@f4000/r5fss@78000000/r5f@78000000: Reference to non-existent node or label "main_r5fss0_core0_sram"
|
|   also defined at /home/tim/tisdk/build/workspace/sources/linux-ti-staging-rt/arch/arm64/boot/dts/ti/k3-am642-sk.dts:679.20-684.3
| ERROR: Input tree has errors, aborting (use -f to force output)
| make[3]: *** [/home/tim/tisdk/build/workspace/sources/linux-ti-staging-rt/scripts/Makefile.lib:423: arch/arm64/boot/dts/ti/k3-am642-sk.dtb] Error 2
| make[2]: *** [/home/tim/tisdk/build/workspace/sources/linux-ti-staging-rt/scripts/Makefile.build:480: arch/arm64/boot/dts/ti] Error 2
| make[1]: *** [/home/tim/tisdk/build/workspace/sources/linux-ti-staging-rt/Makefile:1391: ti/k3-am642-sk.dtb] Error 2
| make: *** [/home/tim/tisdk/build/workspace/sources/linux-ti-staging-rt/Makefile:234: __sub-make] Error 2
| ERROR: oe_runmake failed

“引用不存在的节点或标签“ain_r5fss0_core0_sram""。“。</s>“ 似乎向“oc_sram"添加“添加了 SRAM 分配不起作用。
我猜测我在 main_rf5ss0_core0 中添加了“sram"属性“属性时没有采纳、因此我查看了器件树绑定“ti、k3-r5f-rproc.yaml“、它针对“sram"属性“属性说明了这一点:

   SRAM:
    $ref/schemas/types.yaml /definitions/phandle-array
    最小项目1.
    最大值4
    项目
     最大值1.
    描述|
     对一个或多个保留的片上 SRAM 区域进行 Phandle 操作。 区域
     应定义为相应 SRAM 节点的子节点、和
     通用绑定来定义、
     Documentation/devicetree/bindings/sram/sram.yaml
从 bindings/sram/sram.yaml:
阵列属性
 “^([A-Z0-9]*-)?SRAM (-section)?@[a-f0-9]+$“:
  类型对象
  说明
   SRAM 节点的每个子节点指定保留存储器区域。
如果我理解正确、  这种正则表示它正在查找名称中带有连字符(而不是下划线)的 SRAM 节点子节点、并且在“SRAM"前“前只有一个连字符。 尽管根据最新的器件树规范、节点名称中的下划线是合法字符、但我想我会尝试通过从“main_r5fss0_core0_SRAM"切“切换到“r5fss00-SRAM"来“来使名称符合 YAML。
 
我将上述补丁替换为:
```μ s
diff -git a/arch/arm64/boot/dts/ti/k3-am642-sk.dts b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
索引 9ec2ad62efd..90d92ac912e4 100644
-- A/arch/arm64/boot/dts/ti/k3-am642-sk.dts
++ b/arch/arm64/boot/dts/ti/k3-am642-sk.dts
@@–670、10 +670、17 @@ mbox_m4_0:mbox-M4-0{
};
};

+&oc_sram{
+ r5fss00-SRAM@80000{
+ reg =<0x80000 0x40000>;
+};
+};
+
&main_r5fss0_core0{
mboxes =<&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
memory-region =<&MAIN_r5fss0_core0_dma_memory_region>、
<&MAIN_r5fss0_core0_memory_region>;
+ SRAM =<&r5fss00-SRAM>;
};

&main_r5fss0_core1{
```μ s

现在我得到了:

| DTC arch/arm64/boot/dts/ti/k3-am642-sk.dtb
|错误:/home/tim/tisdk/build/workspace/sources/linux-ti-staging-rt/arch/arm64/boot/dts/ti/k3-am642-sk.dts:683.18-19 语法错误
|致命错误:无法解析输入树
假设 DTC 将选项卡视为单个字符、683.18-19 就指向“r5fss00-SRAM"中“中的连字符。  
为了检查我的 Yocto 环境是否以某种方式拧紧了螺钉、我在全新下载的 Processor SDK Linux RT v10.01.10.04 的情况下、在品牌的 Processor SDK Docker 容器中重复了上述步骤、并获得了相同的结果。  

我的问题是:
  1. 在第一种情况下、r5fss0_0 SRAM 节点似乎未添加到 oc_SRAM。 有什么想法吗?
  2. 如果想知道为什么将节点名称更改为 r5fss00-SRAM 会出现语法错误?

谢谢!
Tim

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

    您好、Tim、

    修复

    感谢您的举报。 我不确定使用哪种“官方“语言、但如果您想在其他地方引用、内存分配似乎需要一个与内存分配名称不同的标签。 我能够验证以下修改后的代码是否随 SDK 11.0 一起构建:

    arch/arm64/boot/dts/ti/k3-am642-evm.dts
    
    &oc_sram {
            main_r5fss0_core0_sram: r5fss00-sram@80000 {
                    reg = <0x80000 0x40000>;
            };
    };
    
    &main_r5fss0_core0 {
            mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
            memory-region = <&main_r5fss0_core0_dma_memory_region>,
                            <&main_r5fss0_core0_memory_region>;
            sram = <&main_r5fss0_core0_sram>;
    };
    

    我已经做了一个备注、以便在将来的某个时候更新这些文件。 希望为学院的 SDK 11.1 版本(计划本月晚些时候)获取这些 API。 我们将看到是否有时间在该版本的 Academy 中恢复这些补丁文件、我的重点是 完成新 PRU Academy 模块的初稿。

    供参考:即将举行的 PRU 培训  

    在讨论学院更新时:

    今年、该团队花费了大量时间在 PRU Academy 中发布了 PRU 开发的综合培训、以及 open-PRU 存储库中的 PRU 示例项目: https://github.com/TexasInstruments/open-pru 

    我仍在对 open-PRU 文档和 makefile 进行一些结构更改
    https://github.com/TexasInstruments/open-pru/pull/58
    https://github.com/TexasInstruments/open-pru/pull/65 

    如果您的团队对 PRU 开发感兴趣、并且希望在我们发布 PRU 学院/推送更新时收到通知、请使用您的电子邮件直接发送一条消息、我会将您添加到我的通知列表。

    此致、

    Nick

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

    WIW、这似乎也适用于 SDK v10.01。
    谢谢!