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.

使用sysbios,如何打开L2cache

Other Parts Discussed in Thread: TMS320C6678, SYSBIOS

求助:

         一个基于bios_6_33_06_50的RTSC工程,在L2空间够的情况下,怎么才能打开L2cache,并将其设置为256K。

        需要对其配置文件.cfg进行怎么的配置,或者在main()函数中使用哪些指令吗?

        工程环境是CCS v5.1,板子是TMS320C6678。

        跪 求大神指点啊!

        

  • cache所述的module为:ti.sysbios.family.c66.Cache

    使用函数:

    Void Cache_setSize(Cache_Size *size); 

    结构体定义如下:

    typedef struct Cache_Size {
        Cache_L1Size l1pSize;
        // L1 Program cache size
        Cache_L1Size l1dSize;
        // L1 Data data size
        Cache_L2Size l2Size;
        // L2 cache size
    } Cache_Size
  • 首先表示感谢!

    那我在配置platform文件的时候,需不需要把L2CACHE、L1Dcache和L2Dcache规划好,就想下图一样。如果说我已经按照下图的配置,配置好空间了。我是否还需要在main()函数中添加什么指令,将其使能,并且控制L2cache的映射范围在DDR3的0x80000000~0x80FFFFFF。

  • 在cfg文件中配置与在main函数中使用函数进行配置应该是一样的。

    你的最后一句话“控制L2cache的映射范围在DDR3的0x80000000~0x80FFFFFF。”有问题。

    L2 cache的范围在你配置的L2SARM空间中。与DDR3的地址空间范围无关。

  •  在一个不使用sysbios的工程中,我如果想打开l2cache的话,调用的是CSL中的API,如下所示,其中128、129、130、131的意思应该是对哪一段DDR的映射,之后将L2cache设置为256k。

    CACHE_enableCaching(128);        //MAR128: 0x80000000-0x80ffffff cache映射的范围
    CACHE_enableCaching(129);
    CACHE_enableCaching(130);
    CACHE_enableCaching(131);
    CACHE_setL2Size(CACHE_256KCACHE);

    那我如果想在sysbios的工程中,打开相同的L2cache功能的话,我应该怎么做?

  • 你可以使用如下函数:

    Void Cache_setMar(Ptr baseAddr, SizeT byteSize, UInt32 value);
     
    baseAddr — start address for which to set MAR
    byteSize — size (in bytes) of memory block
    value — value for setting MAR register
  • dennis wu,

         谢谢! 

        小弟实在是不太明白,能不能系统的讲一下,我如果需要需要达到之前的那个效果的话,应该怎么做?首先的cfg配置需要注意什么?然后是在main()函数中需要怎么编写?

        跪谢啊!