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.

c6678 memory

最近在学习c6678的memory相关知识,有以下几个问题存在疑惑:

1 在c66x corepac user's guide文档时,其中模块xmc一方面是将32位逻辑地址转换为36位物理地址,另一方面是实现存储保护功能,即memory protection,请问memory protection是在什么上面来体现的,或者说xmc怎么实现memory protection的?

2 external memory controller(EMC)模块的作用和工作方式?搞不懂这个模块的作用,作为软件开发人员,在自己的程序中什么情况下需要特别关注这个模块的相关寄存器吗?

3 在该文档中还有单独的一个章节叫"memory protection",另外在芯片数据手册上的7.10同样有一章节称为"memory protection unit (MPU) ". 这两者各自的作用与工作方式是什么?有什么区别?还有在程序中什么情况下需要特别注意这些模块的寄存器配置?

4 最后就是msm sram的使用情况?

在c6678内LL2和L1是可以配置为cache和sdram两种类型的,若配置为sdram,则dsp核运算单元可直接访问的存储单元;若配置为cache则是可以高速缓存更低层次的存储区间的数据,以供dsp核高速访问;那mamc中的共享memory区域,映射逻辑地址为0x0c000000,即为sl2时,该片共享区域是作为cache?sdram?还是像ll2一样可部分为cache,部分为sdram?若部分为为cache,部分为sdram,怎么配置两者间各占多少空间? 对配置为sl3时,同问上述问题。

 

  • 问题1,2,4在C66x corepac手册中有详细的描述,具体细节请参考该文档。

    1. 在配置是有一个PERM内存访问属性字段配置某一段memory的访问属性,参考手册中7.3节;

    2. 是core与外部其他设备间的通信接口,如core访问SRIO寄存器等都是通过该接口,或者SRIO访问core内部的资源;手册1.2.6节;

    3. 芯片手册中的mpu数突出每个芯片MPU的差异细节,包括每个外设中负着的MPU单元,corepac中的的memory ptotection突出的是L1/L2/SL2的memory保护。在需要使用内存保护时需要配置这些寄存器,关于内存保护可以参考文档:

    http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/22289.aspx

    4. SL2只能配置为SRAM,并且默认是cacheable,此时是一级cache只经过L1;映射为SL3时同样只能为SRAM,此时可以灵活配置器cacheable属性。