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.

[参考译文] AM5728:AM5728 4G DDR (LPAE) DMA 问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/947183/am5728-am5728-4g-ddr-lpae-dma-problem

器件型号:AM5728

大家好、

 我们使用的  是 AM5728 SoC、PROCESSOR-SDK-Linux 05.02.00.10和4.14.79内核。

请参阅以下文章以支持4G DDR。


根目录@0123456789:~# cat /proc/meminfo
总内存:3918688 KB
MemFree:3421804 KB
可用内存:3503672 KB

根目录@0123456789:~# cat /proc/iomem
(笑声)
8000000000-9ffffffff:系统 RAM
80008000-80dfff:内核代码
81000000-810c1edf:内核数据
a0000000-abffff:CMEM
ac000000-fe5ffff:系统 RAM
200000000-27fcfff:系统 RAM

它可以正常使用和释放。

但是、当使用高于0x200000000的地址作为 DMA 时、无法获取任何数据。

修改了 arch/arm/mm/kconfig 以强制 ARCH_DMA_ADDR_T_64BIT 依赖于 LPAE:

配置 ARCH_DMA_ADDR_T_64位

DEF_Bool ARM_LPAE

我的内核配置:

CONFIG_ARM_LPAL=y
CONFIG_ARCH_PHYS_ADDR_T_64BIN=y
CONFIG_ARCH_DMA_ADDR_T_64位= y

FDT:

dma_memory_region:dma-memory@b0000000{
兼容="共享 dma-pool ";
REG =<0x2 0x00000000 0x0 0x12800000>;
可重复使用;
状态="正常";
};

我可以看到 dma_addr_t 为8个字节。

sizeof (dma_addr_t)=8

DMA 读取的数据全部为0、并发生错误:

[6400.986736]------ [在此处剪切]-----
[6400.991382]警告:CPU:0 PID:0、位于./drivers/bus/omap_l3_noc.c:147 L3_INTERRUPT_Handler+0x254/0x370
[6401.000814] 44000000.OCP:L3自定义错误:主 SDMA 目标 GPMC (空闲):在功能访问期间以用户模式访问数据

当我只将器件树  DMA 保留存储器地址修改为低于0x100000000时:

reg =<0x0 0x0xb0000000 0x0 0x0x800000>;

没有问题。

因此、我想知道0x200000000以上的物理内存是否支持 DMA? 需要进行哪些更改?

 

此致

艾伦

 

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

    您好、Allen、

    此处理器上的 DMA 只能使用32位地址。

    外设 DMA 仅限于32位地址空间–即、它们无法访问 DDR 前2GB 以上的存储器(上层2GB 范围映射到更高阶地址、因此仅可访问 A15、支持 LPAE 模式)。  较高的存储器区域只能用于用户模式  

    内核中的所有驱动程序都提供了一个 DMA 掩码、该掩码告诉内核支持的缓冲区必须位于32位地址空间内。

    此致、
    Vishal

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

    您好、Vishal、

    感谢您、我在仔细检查 DMA 源代码和 AM5728 DRM 后也了解到了这一点。

    此致、

    艾伦