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

TMS320C6678: 调用malloc引发的疑问。

Part Number:TMS320C6678

TMS320C6678上有L1P L1D  L2;

调用malloc,成功申请的内存空间是L2上的吗?

Nancy Wang:

malloc是从heap上申请内存,请查看map文件中.sysmem分配在哪段空间,即为malloc申请的内存空间。

,

Haiyang Ma:

我正在在看srio_loopback.c的例程,一部分代码如下

 t_buff = malloc(TARGET_SIZE);if(t_buff == NULL) {printf("Failed to alloc meory !\r\n");return -1;}/* read the DSP Core Number */core_num = CSL_chipReadReg(CSL_CHIP_DNUM);/* srio transmit test: srio write(NWRITE) --> srio read(NREAD) */ret = srio_test(core_num, (uint32_t)Convert_CoreLocal2GlobalAddr((uint32_t)t_buff), TARGET_SIZE, Srio_Ftype_WRITE);if(ret != 0) {printf("srio test occur error! \r\n");return -1;}/*** @brief This function convert L2SARM inter address to global address** @param addr L2SRAM inter address** @return 32bit-addr*/
uint32_t Convert_CoreLocal2GlobalAddr(uint32_t addr)
{uint32_t corenum;/* Get the core number. */corenum = CSL_chipReadReg(CSL_CHIP_DNUM);if((addr >= (uint32_t) 0x800000) && (addr <(uint32_t) 0x880000)) {/* Compute the global address. */return ((1 << 28) | (corenum << 24) | (addr & 0x00ffffff));} else {return addr;}
}

t_buff在初始化(malloc)后,调用Convert_CoreLocal2GlobalAddr(),进行一次地址转换,为什么这样做?

,

Nancy Wang:

从函数名来看功能是将local L2的地址转换成global的地址,这样所有的core都能访问该地址。

,

Haiyang Ma:

难道每次malloc,申请到的内存都是L2中的?

,

Nancy Wang:

可以修改的,cmd中重新指定.sysmem。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6678: 调用malloc引发的疑问。
分享到: 更多 (0)