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.

C55XXCSL_LP的csl_emif.c中SDRAM读写函数访问边界的BUG

硬件:EVM5515 

环境:CCS V6.0

问题:在程序中调用csl_emif.c提供的SDRAM_write()或者SDRAM_read()函数时,如果读/写边界到达最后一个字节,就会出错。


SDRAM的地址空间范围是0x28000~0x3FFFFF

宏定义CSL_SDRAM_START_ADDR=0x28000,CSL_SDRAM_END_ADDR=0x400000。

假设调用为:SDRAM_write(hEmif, 1024, 0x3FFC00, &WriteBuf[0]);

则访问的是0x3FFC00~0x3FFFFF的1024个 数据。显示,访问的空间仍在SDRAM上,而且是SDRAM的最后1k空间。

代入上图第675行((sdramAddr + numWords) < CSL_SDRAM_END_ADDR)得到((0x3FFC001024) < 0x400000),条件不成立。函数返回值是684行的CSL_ESYS_INVPARAMS。

这显然是一个BUG。

所以:675行的“<”应该改为“<=”。

SDRAM_read()函数也有同样的问题。