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.

[参考译文] TDA4AL-Q1:如何在 TDA4AL 4G DDR 中配置 CMA

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1320346/tda4al-q1-how-to-config-cma-in-tda4al-4g-ddr

器件型号:TDA4AL-Q1

尊敬的出口:

我正在尝试配置4G DDR CMA。 需要您的帮助来检查如何配置 CMA 地址、谢谢。

当 I 配置如下所示:

	linux,cma {
                status = "okay";
        };
	linux_cma_region: linux-cma-buffers@8a0000000 {
		compatible = "shared-dma-pool";
		status = "okay";
                reusable;
                reg = <0x09 0xa0000000 0x00 0x18000000>;
                linux,cma-default;
	};

登录如下:

[    0.185822] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 764504178s
[    0.195809] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[    0.216667] ------------[ cut here ]------------
[    0.221394] WARNING: CPU: 0 PID: 1 at mm/cma.c:110 cma_init_reserved_areas+0x68/0x20c
[    0.229413] Modules linked in:
[    0.232532] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.1.46-00005-g1971a00d7542 #4
[    0.240355] Hardware name: Texas Instruments J721S2 EVM (DT)
[    0.246134] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    0.253245] pc : cma_init_reserved_areas+0x68/0x20c
[    0.258226] lr : cma_init_reserved_areas+0x78/0x20c
[    0.263206] sp : ffff80000941bd50
[    0.266584] x29: ffff80000941bd50 x28: 0000000000000000 x27: ffff8000090400c8
[    0.273877] x26: ffff800008fd01f0 x25: ffff8000093d2578 x24: 0000000000000001
[    0.281169] x23: ffff800008fd0000 x22: fffffc0000000000 x21: 00000000009a0000
[    0.288459] x20: 00000000000ffe00 x19: ffff8000093d25e0 x18: 000000000002e9ca
[    0.295750] x17: 6d202c6666666666 x16: 6666667830203a73 x15: 0000000000000000
[    0.303041] x14: 0000000000000001 x13: 0000000000000002 x12: ffff800009379350
[    0.310331] x11: ffff800009379330 x10: 0000000000000000 x9 : fffffc0020b31708
[    0.317622] x8 : fffffc0020b04601 x7 : 0000000000000006 x6 : ffff8008768b0000
[    0.324912] x5 : ffff80000941bcc0 x4 : ffff800009378500 x3 : ffff00087f9c6940
[    0.332203] x2 : ffff00087f9c6600 x1 : 0000000000000000 x0 : 0000000000000000
[    0.339494] Call trace:
[    0.341985]  cma_init_reserved_areas+0x68/0x20c
[    0.346611]  do_one_initcall+0x54/0x1d0
[    0.350527]  kernel_init_freeable+0x218/0x284
[    0.354974]  kernel_init+0x24/0x130
[    0.358537]  ret_from_fork+0x10/0x20
[    0.362185] ---[ end trace 0000000000000000 ]---
[    0.366928] Unable to handle kernel paging request at virtual address fffffc0024800000
[    0.375021] Mem abort info:
[    0.377866]   ESR = 0x0000000096000006
[    0.381692]   EC = 0x25: DABT (current EL), IL = 32 bits
[    0.387117]   SET = 0, FnV = 0
[    0.390229]   EA = 0, S1PTW = 0
[    0.393432]   FSC = 0x06: level 2 translation fault
[    0.398412] Data abort info:
[    0.401346]   ISV = 0, ISS = 0x00000006
[    0.405259]   CM = 0, WnR = 0
[    0.408283] swapper pgtable: 4k pages, 48-bit VAs, pgdp=000000008303f000
[    0.415129] [fffffc0024800000] pgd=10000008ff9c5003, p4d=10000008ff9c5003, pud=10000008ff9c4003, 0
[    0.425980] Internal error: Oops: 0000000096000006 [#1] PREEMPT SMP
[    0.432381] Modules linked in:
[    0.435495] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W          6.1.46-00005-g1971a00d75424
[    0.444827] Hardware name: Texas Instruments J721S2 EVM (DT)
[    0.450604] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    0.457715] pc : cma_init_reserved_areas+0x98/0x20c
[    0.462696] lr : cma_init_reserved_areas+0x78/0x20c
[    0.467675] sp : ffff80000941bd50
[    0.471053] x29: ffff80000941bd50 x28: 0000000000000000 x27: ffff8000090400c8
[    0.478344] x26: ffff800008fd01f0 x25: ffff8000093d2578 x24: 0000000000000001
[    0.485635] x23: ffff800008fd0000 x22: fffffc0000000000 x21: 00000000009a0000
[    0.492926] x20: 00000000000ffe00 x19: ffff8000093d25e0 x18: 000000000002e9ca
[    0.500217] x17: 6d202c6666666666 x16: 6666667830203a73 x15: 0000000000000000
[    0.507508] x14: 0000000000000001 x13: 0000000000000002 x12: ffff800009379350
[    0.514798] x11: ffff800009379330 x10: 0000000000000000 x9 : fffffc0020b31708
[    0.522089] x8 : fffffc0020b04601 x7 : 0000000000000006 x6 : 0000000000000640
[    0.529379] x5 : ffff80000941bcc0 x4 : 00000000009a0001 x3 : ffff00087f9c6940
[    0.536670] x2 : ffff00087f9c6600 x1 : 0000000000000000 x0 : 0000000024800000
[    0.543961] Call trace:
[    0.546450]  cma_init_reserved_areas+0x98/0x20c
[    0.551076]  do_one_initcall+0x54/0x1d0
[    0.554989]  kernel_init_freeable+0x218/0x284
[    0.559435]  kernel_init+0x24/0x130
[    0.562994]  ret_from_fork+0x10/0x20
[    0.566642] Code: 9107c2fa 910006a4 cb8032a0 d37ae400 (f8766805) 
[    0.572865] ---[ end trace 0000000000000000 ]---
[    0.577586] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    0.585407] SMP: stopping secondary CPUs
[    0.589412] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---

此致、

张弗雷迪

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

    您好、Fredy:

    以上代码段不能为我提供完整的信息。

    [报价 userid="358109" url="~/support/processors-group/processors/f/processors-forum/1320346/tda4al-q1-how-to-config-cma-in-tda4al-4g-ddr ]我正在尝试配置4G DDR CMA。 需要您的帮助来检查如何配置 CMA 地址,谢谢。

    您在电路板上的整体存储器是多少?  4 GB 是要配置的 DDR 总大小还是 CMA 大小?

    为您的电路板选择了什么 MMU 页码大小配置(4K 与64K)(这决定了 CMA 粒度)?

    您是在 TI EVM 还是在客户电路板上尝试此功能?

    linux_cma_region:linux-cmA-buffers@ 8a0000000 {

       寄存器=< 0x09 0xa0000000 0x00 0x18000000 >;

    这些都是不匹配的。 您保留的大小为0x18000000 = 384 MB。 64K 页大小只能以512 MB 的倍数保留 CMA。

    此致

    苏曼

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

    Suman、  

    总的存储器是4G DDR。 CMA 内存需要重新配置。 需要您的帮助来检查如何配置 CMA 内存、因为我们的 RTOS 解码应用程序需要使用它。  

    此致、

    张弗雷迪

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

    Suman、  

    SDK 为 SDK9.1,默认配置,没有 pagesize 更改。 它是客户的电路板。 提前感谢。  

    此致、

    张弗雷迪  

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

    您好、Fredy:

    即使您没有专门为其添加设备树条目、内核中也应该分配了一个默认 CMA 池。

    您要做什么?您要使用的 CMA 池大小是多少?

    您提到了 RTOS 解码应用-如果这是 OpenVX 图形的一部分、那么您应该使用由 VisionApps 框架使用的内存段。

    标准 CMA 池用于 Linux 上下文分配、它不由 dma-buf 框架管理以允许缓冲区引用计数、尤其是当缓冲区指针被提供给远程处理器时。

    此致

    苏曼

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

    Suman、  

    由于 CMA 问题、我们无法运行 OpenGL 和解码应用程序将失败。   

    能否 在 TDA4VE 上输出参考内存映射以实现4G DDR 内存映射(尤其是 CMA )?  基于 EVM 可以。  

    我在 SDK 上尝试了 serveral address,sytem 可以引导,但在运行 applciaiton 时失败。  

    我们的 RTOS SDK、解码应用需要 使用 OPENVX 执行 GST。  您可以告诉我如何调整 Total 4G DDR 上的 CMA 大小吗? 提前感谢。  

    此致、  

    张弗雷迪

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

    您好、Fredy:

    由于 CMA 问题,我们无法运行 OpenGL 和解码应用程序将失败。   [/报价]

    这些是标准 SDK 用例、因此我很惊讶地听说这是不起作用的。

    您能否 在 TDA4VE 上输出参考内存映射以实现4G DDR 内存映射(尤其是在 CMA 上)?  基于 EVM 可以。  [/报价]

    我不知道你在问什么。 您应该能够从内核引导日志本身推断出这一点。

    我 手头没有 J721S2 EVM、请提供 J721S2 EVM 上的内核引导日志、我可以回答您的问题。

    我在 SDK 上尝试了服务器地址,sytem 可以引导,但在运行 applciaiton 时失败。
    [/quote]

    CMA 大小应为512 MB (在64K 页的 Linux 系统上最小粒度)。 您不能减少/使用比这更小的尺寸。 如果确实要降低 CMA 大小、则需要切换到4K 页面大小。

    如果您尝试移动到不同的网络 CMA 地址、请使用对齐的512MB 地址。

    此致
    苏曼

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

    Suman、

    如下所示、我们的默认 SDK j721s2配置: 根据您的咨询、下面是不正确的,、但它适用于 EVM。 您可以再次确认您对 CMA 大小的结论。

       linux_cma_region: linux-cmA-buffers@980000000 {
          兼容="共享 dma-pool";
                   可重复使用;
                   REG =<0x09 0x8000000 0x00 0x38000000>;
                   Linux、CMA 默认值;
       };

    还需要帮助检查 DDR 大小是否为4G、如何将地址移动到另一个地址。

    此致、

    张弗雷迪

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

    根据您的结论、大小(0x38000000)是896M。 也与您的结论不匹配。

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

    您好、Fredy:

    我们的默认 SDK j721s2配置如下: 根据您的咨询,下面的内容不正确,但它适用于 EVM。

    请提供完整的启动日志。 您确定 Linux 内核没有调整这一点还是循环它?

    您始终可以添加/启用所需的 CMA 调试 Kconfig 选项和/或命令行参数以进行进一步调查。

    此致

    苏曼

    PS: 由于我在本周的剩余时间内不在办公室内,所以我对该主题的回答将会延迟。