在使用DSP6618的时候,描述符是放在memory region里面的,使用的时候可以通过下面的方式配置,
memCfg.memRegion配置成Qmss_MemRegion_MEMORY_REGION_NOT_SPECIFIED;表示按顺序使用,memCfg.startIndex = 0表示描述符的起始位置。现在我在系统初始化的时候,按每个核来分别配置描述符,core0-4分别配置成Qmss_MemRegion_MEMORY_REGION0-4,startIndex分别配置成相应的起始位置(前面的用了多少,就从多少开始),并且一共分配了256个描述符,是SRPIO要用的,现在我在FFTC里面,系统初始化,并也要配置描述符,memCfg.memRegion= Qmss_MemRegion_MEMORY_REGION5;memCfg.startIndex=256;然后调试运行,出现了以下错误:
这里不方便截图,口述一下:运行一段时间以后,错误信息是core0可以正常运行,core1-3不能插入描述符,错误代码-138,(insert memory region 3 error,error code -138)查了一下,表示插入描述符失败,因为没按照顺序插入,驱动没问题啊。请问我上述的配置存在什么问题,或者是哪里出了问题???急啊。。。
另外在运行过程也会出现以下问题,
Andy Yin1:
keystone1要求memory region配置的index及base address按照升序,及region_N配置的start index及base address必须大于region_N-1, 这个错误提示就是不满足这个要求。
Wei Jingwen:
回复 Andy Yin1:
内存分配都是DSP内部自动分配的,因此基地址也都是随机的,怎么保证地址升序?地址也不能手动配置只能按DSP分配的情况来确定。例子里面是通过一个全局地址转换函数得到基地址的,
Andy Yin1:
回复 Wei Jingwen:
可以将全局变量指定到不同的memory section中,memory section 可以按照地址升序划分。