https://e2e.ti.com/support/processors-group/processors/f/processors-forum/604490/am5728-cmem-issues
器件型号:AM5728我在 am5728上使用 ti-processor-sdk-linux-am57xx-evm-03.03.00.04
并希望为捕获视频分配缓冲区。 我的 DTS:
保留存储器{ #address-cells =<0x2>; #size-cells =<0x2>; 范围; ipu1_CMA@9d000000{ compatible ="shared-dma-pool"; reg =<0x0 0x9d000000 0x0 0x2000000>; 可重用; status ="确定"; Linux、phandle =<bbb5>; phandle =<bbb5>;phandle =<bb5>; }; ipu2_CMA@95800000{ compatible ="shared-dma-pool"; reg =<0x0 0x95800000 0x0 0x3800000>; 可重复使用; status ="正常"; linux、phandle =<0xba>; phandle =<0xba>; }; dsp1_CMA@99000000{ 兼容="共享 dma-pool"; reg =<0x0 0x99000000 0x0 0x4000000>; 可重复使用; 状态="正常"; Linux、phandle =<0xC2>; phandle =<0xC2>; }; dsp2_CMA@9f000000{ 兼容="共享 dma-pool"; reg =<0x0 0x9f000000 0x0 0x800000>; 可重复使用; 状态="正常"; Linux、phandle =<0x127>; phandle =<0x127>; }; cmem_block_mem@a0000000{ reg =<0x0 0xa0000000 0x0 0xA000000>; 无映射; 状态="确定"; Linux、phandle =<0x131>; phandle =<0x131>; }; myblock:cmem_block_mem@aa000000{ reg =<0x0 0xaa000000 0x0 0x2000000>; 无映射; 状态="确定"; }; cmem_block_mem@40500000{ reg =<0x0 0x40500000 0x0 0x100000>; 无映射; 状态="确定"; Linux、0x132> ;phandle = 0x132> }; }; cmem{ compatible ="ti、cmem"; #address-cells =<0x1>; #size-cells =<0x0>; #pool-size-cells =<0x2>; status ="确定"; cmem_block@0{ reg =<0x0>; memory-region =<0x131>; cmem-buf-pools =<0x1 0x0 0xA000000>; }; cmem_block@ @1{reg = 0x1>;memory-region =<&myblock>;cmem-buf-pools=<0x6 0x132>;0x4800>;cmemory-region = 0x4800> ;<0x362>;cem-region = 0x4800>
CMEM 负载正常
root@am57xx-evm:~ cat /proc/cmem Block 0:pool 0:1 bufs size 0xa000000 (请求0xa000000) pool 0 Busy bufs: pool 0 free bufs: ID 0:phys addr 0xa0000000 Block 1:pool 0:6 bufs size 0x96000 (请求0x96000) pool 0 Busy bufs: pool 0 free bufs ID: phys addr 0xabf6a000 id 1:phys addr 0xabed4000 id 2:phys addr 0xabe000 id 3:phys addr 0xabda8000 id 4:phys addr 0x12000 abdid 5:phys addr 0xabc7c000 Block 1:pool 1:6 bufs size 0x3f5000 (0x3buf1 :buf00) fbuf1:请求的 fbuf2:f4800s 地址池0:请求的 fbuf2:fbuf2:fbuf2:bufs phys addr 0xab887000 id 1:phys addr 0xab492000 id 2:phys addr 0xab09d000 id 3:phys addr 0xaaca8000 id 4:phys addr 0xaa8b3000 id 5:phys addr 0xaa4be000
但示例程序不起作用:
CMEM_AllocParams PRMS;
PRMs.alignment = 0;
PRMs.flags = CMEM_NONCACHED;
PRMs.type = CMEM_POOL;
CMEM_INIT();
void* ptr = CMEM_alloc (640*480*2,和 PRMS);
printf ("获取缓冲区%08X\n"、ptr);
CMEM_FREE (PTR、PRMS);
CMEM_EXIT();
CMEM 错误:registerAlloc: ioctl CMEM_IOCREGUSERR failed for phys addr 0xa0000000:-1
TIOCL 致命错误:TI 多核工具守护程序(/usr/bin/ti-mctd)未运行。 启动守护程序后重新运行应用程序。 有关详细信息、请参阅用户指南。
尝试运行 ti-mctd 时:
CMEM 错误:分配堆:ioctl CMEM_IOCALLOCHEPCACHED 失败:-1
TI-mctd:/home/gtbldadm/processor-sdk-linux-krogoth-build/build-CORTEX_1/arago-tmp-external-linaro-toolchain/work/am57xx_evm-linux-gnueabi/opencl/1.1.12.0-r0.0/git/host/mct-demon/cmem_allocator.h:94:CmemAllocator::CmemAllocator ():断言`mSMC_ALLOC_DSP_addr_= MSMC_addr'失败。
