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/AM5728:如何分配新的 CMEM 块

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/660967/linux-am5728-how-to-allocate-a-new-cmem-block

器件型号:AM5728

工具/软件:Linux

您好!

在我的旧线程中:https://e2e.ti.com/support/arm/sitara_arm/f/791/t/659808

我尝试在 am57xx-evm-cmem.dtsi 中分配一个新块

/{
保留存储器{
#address-cells =<2>;
大小单元格=<2>;
范围;

cmem_block_mem_0:cmem_block_mem@a0000000{
reg =<0x0 0xa0000000 0x0 0xc000000>;
无地图;
状态="正常";
};

cmem_block_mem_1_ocmc3:cmem_block_mem@40500000{
REG =<0x0 0x40500000 0x0 0x100000>;
无地图;
状态="正常";
};

cmem_block_mem_2:cmem_block_mem@ac000000{
reg =<0x0 0xac000000 0x0 0xc000000>;
无地图;
状态="正常";
};

};

cmem{
兼容="ti、cmem";
#address-cells =<1>;
#size-cells =<0>;

#pool-size-cells =<2>;

状态="正常";

cmem_block_0:cmem_block@0{
reg =<0>;
memory-region =<&cmem_block_mem_0>;
cmem-buf-pools=<1 0x0 0xc000000>;
};

cmem_block_1:cmem_block@1{
reg =<1>;
MEMORY 区域=<&cmem_block_mem_1_ocmc3>;
};

cmem_block_2:cmem_block@2{
reg =<2>;
memory-region =<&cmem_block_mem_2>;
cmem-buf-pools=<1 0x0 0xc000000>;
};


};
};

0xac000000 ~ 0xb7ffff 是用于存储缓冲区的 cmem

但是当我尝试更新 am57xx-beagle-x15.dtb 时 :

root@am57xx-EVM:/opt# cat /proc/cmem

块0:池0:1 bufs 大小0xc000000 (请求0xc000000)

池0忙缓冲区:

池0免费 bufs:
ID 0:PHY 地址0xa0000000

root@am57xx-EVM:~# cat /proc/iomem | grep CMEM
40500000-405ffff:CMEM
a0000000-abffff:CMEM
ac000000-b7ffff:CMEM

我对我被分配了一个 phy 地址但没有分配新的 CMEM 块感到困惑吗?

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

    您应该重建 DTB 并重新加载它。
    请查看本指南、了解如何编译器件树:
    processors.wiki.ti.com/.../Linux_Kernel_Users_Guide
    另请检查此主题:
    e2e.ti.com/.../1836607


    希望这对您有所帮助。

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

    您好!

    我认为我已经正确更新了 am57xx-beagle-x15.dtb。

    您可以看到:

    root@am57xx-EVM:~# cat /proc/iomem | grep CMEM

    40500000-405ffff:CMEM

    a0000000-abffff:CMEM

    ac000000-b7ffff:CMEM

    ac000000-b7ffff 是我在 保留内存中分配的内存(am57xx-evm-cme.dtsi)

    为什么 cmem 中没有新的块???

    root@am57xx-EVM:/opt# cat /proc/cmem

    块0:池0:1 bufs 大小0xc000000 (请求0xc000000)

    池0忙缓冲区:

    池0免费 bufs:
    ID 0:PHY 地址0xa0000000

    仍然是一个默认块

    我的 SDK 是最新版本4.2.0.9

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

    您好!

    我发现 :

    cmem_block_mem_2_ocmc3:cmem_block_mem@40500000{

    REG =<0x0 0x40500000 0x0 0x100000>;

    无地图;

    状态="正常";

    };

    必须是 CMEM 的最后一个块。之后、我自己的块将可用。

    但是,如果我尝试了 ti-mtcd 命令:

    root@am57xx-EVM:~# ti-mctd

    [63.907918] CMEMK 错误:ioctl:块1中没有可用的堆

    CMEM 错误:分配堆:ioctl CMEM_IOCALLOCHEPCACHED 失败:-1

    TIOCL 致命错误:无法从 bb00000000000分配片上 CMEM

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

    请查看本指南:
    downloads.ti.com/.../multiprocess.html
    章节:ti-mctd

    BR
    玛格丽塔