TI中文支持网
TI专业的中文技术问题搜集分享网站

求助AM5708 1G的DDR,只用ARM跟DSP1 ,DDR分给DSP1 500M空间,ARM 500M空间,其他IPU不用。

目前AM5708 1G的DDR,只用ARM跟DSP1 。因大量机器常数数组和矩阵论算,DSP需要大量空间。DSP1程序CODE大于30M,DATA大于60M,HEAP大于20M。

DDR分给DSP1 500M空间,ARM 500M空间,其他IPU不用。如何分配设备树,IPC,CMEM等???

Nancy Wang:

不是很明白如何分配设备树,IPC,CMEM的意思,是指如何给IPC分配共享内存吗?请详细说明一下。

user5012922:

回复 Nancy Wang:

感谢回复,

就是DDR总共1G,ARM跟DSP1 分别500M空间,如何进行分配,需要修改哪些配置文件?(需要用的IPC、CMEM)

user5012922:

回复 Nancy Wang:

感谢您的回复,还有下面个问题请教。

(1)因只用ARM和DSP1。设备树 reserved-memory中DSP2、IPU1和IPU2 设置为disabled,然后重新编译设备树启动后不能启动linux内核。是内核也要配置吗?

修改如下,其他未动:

ipu2_cma_pool: ipu2_cma@95800000 {

compatible = "shared-dma-pool";

reg = <0x0 0x95800000 0x0 0x3800000>;

reusable;

status = "disabled";

};

dsp1_cma_pool: dsp1_cma@99000000 {

compatible = "shared-dma-pool";

reg = <0x0 0x99000000 0x0 0x4000000>;

reusable;

status = "okay";

};

ipu1_cma_pool: ipu1_cma@9d000000 {

compatible = "shared-dma-pool";

reg = <0x0 0x9d000000 0x0 0x2000000>;

reusable;

status = "disabled";

};

dsp2_cma_pool: dsp2_cma@9f000000 {

compatible = "shared-dma-pool";

reg = <0x0 0x9f000000 0x0 0x800000>;

reusable;

status = "disabled";

};

(2)设备树 reserved-memory定义了dsp1 cma地址0x99000000,大小0x4000000。

dsp1_cma_pool: dsp1_cma@99000000 {

compatible = "shared-dma-pool";

reg = <0x0 0x99000000 0x0 0x4000000>;

reusable;

测试代码ex02_messageq中 rsc_table_dsp1.h  中 DSP_MEM_TEXT为什么从 0x95000000开始,

不应该是从cma的地址0x99000000开始分配吗?

#define DSP_MEM_TEXT 0x95000000/* Co-locate alongside TILER region for easier flushing */#define DSP_MEM_IOBUFS 0x80000000#define DSP_MEM_DATA 0x95100000#define DSP_MEM_HEAP 0x95200000

#define DSP_MEM_IPC_VRING_SIZE SZ_1M#define DSP_MEM_IPC_DATA_SIZE SZ_1M#define DSP_MEM_TEXT_SIZE SZ_1M#define DSP_MEM_DATA_SIZE SZ_1M#define DSP_MEM_HEAP_SIZE (SZ_1M * 3)

我希望扩展 DSP_MEM_TEXT_SIZE 到  (SZ_1M * 64)  ,

DSP_MEM_DATA_SIZE (SZ_1M * 128), DSP_MEM_HEAP_SIZE (SZ_1M * 32)。

那么起始地址还是  0x95000000?  dsp1 cma地址0x99000000是否要延后到0x99000000+0xE00 0000=   0xA700 0000?

(0xE00 0000为64M+128M+32M=224M)

Nancy Wang:

回复 user5012922:

第一个问题晚一些给您回复。
2、在DSP的代码里定义的是DSP运行的虚拟的地址,DSP_MEM_TEXT 定义的地址只要与config.bld中的定义相匹配,并且在CMA pool定义的范围内就可以了。

Denny%20Yang99373:

回复 user5012922:

1, DTS文件可以把IPU等不用的删除。DSP的留512M
2,config.bld和rsc_table_dsp.h需要修改
rsc_table_dsp.h和config.bld配的都是DSP虚拟地址,dts文件里保留的是物理地址

user5012922:

回复 Nancy Wang:

感谢回复,是不是可以这样认为:CMA pool定义了可连续使用的内存大小,0x99000000是物理地址。DSP_MEM_TEXT 与config.bld中都是虚拟地址,只要定义相匹配,可以随意在0x80000000~0xc0000000(1G DDR)分配?

user5012922:

回复 Denny%20Yang99373:

感谢回复
1.根据您的回复,测试后发现,IPU等不用的删除任意一个后编译DTS文件会报错,disabled任意一个后内核起不来,停在Startingkernel。
IPU等地址可改动,单独扩展DSP1的长度到256M(0x9900 0000- 0xA500 0000)后,config.bld和rsc_table_dsp.h中DSP_MEM_TEXT等不能再分配(0x9900 0000- 0xA500 0000)地址,但可以分配到(0x8000 0000- 0xc000 0000)的其他空间,大小不超过CMA pool定义的256M即可。
2.rsc_table_dsp.h和config.bld配的都是DSP虚拟地址是正确的,并通过PHYS_MEM_IPC_VRING对应CMA pool分配的物理地址,请教虚拟地址的可分配范围是否也是DDR的范围(0x8000 0000- 0xc000 0000)?

赞(0)
未经允许不得转载:TI中文支持网 » 求助AM5708 1G的DDR,只用ARM跟DSP1 ,DDR分给DSP1 500M空间,ARM 500M空间,其他IPU不用。
分享到: 更多 (0)