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.

[参考译文] Linux/TCI6636K2H:TCI6638K2K

Guru**** 2612375 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581765/linux-tci6636k2h-tci6638k2k

器件型号:TCI6636K2H
主题中讨论的其他器件:TCI6638K2K

工具/软件:Linux

我有一个 tc6638k2k 板、如何使用持续运行的 Linux SDK 中的"mpm 服务"?

将 Linux SDK 从"ti-processor-sdk-linux-k2hk evm-03.00.04-linux"更新为 "ti-processor-sdk-linux-k2hkevm-03.02.00.05-linux"后、

 使用"mpmcl load dsp0****时,mpmsrv 将打印“Segmentation fault (core dumped)” ”   在03.02.00.05版本中, 它在中是可以接受的  03.00.00.04。

我已经检查 了 bin 文件、ELF pt_load 段、如下所示:

程序标题:
键入 Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
加载0x000040 0x00800000 0x00800000 0x340d8 0x340d8 R E 0x20
加载0x035000 0x00850000 0x00850000 0x0008c 0x39494 RW 0x1000
加载0x03508c 0x00889494 0x00889494 0x00000 0x00018 R 0x4
加载0x035090 0x008894b0 0x008894b0 0x00000 0x001b4 RW 0x8
加载0x035090 0x00889664 0x00889664 0x00008 0x00008 RW 0x4
加载0x035400 0x00889800 0x00889800 0x00200 0x00200 R E 0x400
加载0x035600 0x0c000000 0x0c000000 0x00000 0x00040 RW 0x80
加载0x035600 0x0c000080 0x0c000080 0x00000 0x00010 RW 0x80
加载0x035600 0x0c520000 0x0c520000 0x00000 0x00208 RW 0x8
加载0x035600 0xa0100000 0xa0100000 0x82ce0 0x82ce0 RWE 0x20
加载0x0b82e0 0xa0182ce0 0xa0182ce0 0x00e5c 0x00e5c R 0x4
加载0x0b9140 0xa0500400 0xa0500400 0x00000 0x0020c RW 0x8
加载0x0b9140 bb4a00000 b4a00000 0x00000 0x04000 rw 0x8
加载0x0b9180 bb4a24000 b4a24000 0x00000 0x13cf00 rw 0x80
加载0x0b9180 b5904000 b5904000 0x00000 0x00010 RW 0x8
加载0x0b9180 0xbe167800 0xbe167800 0x00000 0x00400 RW 0x80
加载0x0b9180 bbbf56fb00 bbf56fb00 0x00000 0xe1000 RW 0x80

如何解决问题?

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

    这是一个正式的、未经修改的 TINDK 和参考 TI K2K EVM 吗?

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

    我还在 K2H EVM 板上使用官方的、未修改的版本尝试过它,但问题相同。


    我尝试使用 gdb 来调试 mpmsrv、它是中的内核转储
    #0 memset (),位于./sysdeps/arm/memset.S:35
    1 0x00016424英寸?? ()

    2.异常 bin 文件使用 DDR、MSMC 和 L2。 如果仅使用 L2运行其他一些简单示例、则没关系。

    3.我尝试将 mpmsrv 和 mpmcl 复制到03.00.00.04文件系统中、对于 bin 文件、它们是可以的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经尝试过很多次、发现了问题:
    如果加载段地址介于0x0c100000和0x0c600000 (MSMC 的高5MB)之间、则 mpmsrv 将出现分段故障。

    我认为这是03.02.00.05版本中的一个大错误、如何解决这个问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    [引用]异常 bin 文件使用 DDR、MSMC 和 L2。
    我尝试将 mpmsrv 和 mpmcl 复制到03.00.00.04文件系统中、对于 bin 文件、它们是可以的。 [/报价]

    您能否提供您使用的二进制文件、以便我可以在我的设置中对其进行测试?

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

    可以、bin 文件:e2e.ti.com/.../3362.ue_5F00_core0.rar

    这是一个非常简单的示例

    太棒了!

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

    我在以下设置中运行了此操作:
    Linux k2hk EVM 4.4.3.32-gadde2ca9f8

    结果如下:
    root@k2hk EVM:~# mpmcl 复位 dsp0
    重置成功
    root@k2hk EVM:~# mpmcl load dsp0 ue_core0.xe66
    从套接字读取超时
    加载失败(错误:0)
    root@k2hk EVM:~#

    不确定程序的功能是什么、或者如何编译程序、但这似乎是一个内存问题、与此处所述的问题类似:
    e2e.ti.com/.../575003

    检查该主题是否有线索。

    希望这对您有所帮助。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看到内存问题与此类似,但与我的问题不同,它是错误的,因为 CMD 文件中的地址错误

    而且,我发现了这个问题,DTB 文件中的03.00.00.04和03.02.00.05有一个不同的地方,如下所示:

    msmmram@0c000000{
    兼容="MMIO-SRAM";
    reg =<0xc000000 0x100000>;
    范围=<0x0 0xc000000 0x100000>;
    #address-cells =<0x1>;
    大小单元格=<0x1>;

    SRAM-mpm@0{
    兼容="ti、keystone-ds-msm-ram";
    reg =<0x0 0x80000>;
    };
    };

    该代码是在03.02.00.05版本中新增的。 也就是说,我只能在 mpm 中使用0xc000000~0xc080000 MSMC 内存。
    在修改代码以增大范围后、如下所示:
    msmmram@0c000000{
    兼容="MMIO-SRAM";
    reg =<0xc000000 0x580000>;
    范围=<0x0 0xc000000 0x580000>;
    #address-cells =<0x1>;
    大小单元格=<0x1>;

    SRAM-mpm@0{
    兼容="ti、keystone-ds-msm-ram";
    reg =<0x0 0x580000>;
    };
    };
    现在、我可以加载并运行 bin 文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是,我不确定这是否真的好,因为 DTB 文件中有一些类似的代码,它与我的修改冲突
    cmem_block_mem@00c100000{
    REG =<0x0 0xc100000 0x0 0x480000>;
    无地图;
    状态="正常";
    linux、phandle =<0x60>;
    相位=<0x60>;
    };
    可能不是错误、开发人员希望使用5MB MSMC 在03.02.00.05版本中执行某些操作。
    我可以删除"cmem_block_mem"代码吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    [引用]能否删除"cmem_block_mem"代码? [/报价]

    这个存储器区域是 cmem 的一部分、你可以通过 cat /proc/iomem 来检查这个区域:
    0c100000-0c57FFFF:CMEM

    cmem_block_mem 是物理上连续存储器的保留区域。 这种物理上连续的存储器可用作将与其他处理器或硬件加速器/DMA 共享的数据缓冲器。
    以下 Wiki 中对此进行了更详细的解释:
    processors.wiki.ti.com/.../CMEM_Overview
    删除此选项可能会限制 SoC 内核之间共享存储器的使用、某些示例(或您未来的自定义功能)可能无法正常工作。

    更明智的解决方案是更改代码以适应可用的 msmram。

    此致、
    Yordan