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

omapl138 arm中开启cache导致spi flash读写错误

如果不开cache,spi flash没有问题;开cache后,发现写进flash的数据和回读数据不一致。

cache开启流程如下:

    MMUTtbInit();

    // Configures translation table base register
    // with pagetable base address.
    CP15TtbSet((UINT)m_auiPageTable);

    // Enables MMU
    CP15MMUEnable();

    // Enable Instruction Cache
    CP15ICacheEnable();

    // Enable Data Cache
    CP15DCacheEnable();

是否是cache使用有误?

Gary Wu:

有无将SPI访问的地址空间加入到可cache的表中?

arcking:

回复 Gary Wu:

我把所有代码段和数据段全部都加入到cache表了:

#define CACHE_DDR_START_ADDR                0xC00         // 0xC0000000#define CACHE_DDR_END_ADDR                  0xC10         // 0xC1000000

static void MMUTtbInit(void){

 UINT   uiIdx;

    for (uiIdx = 0; uiIdx < (4*1024); uiIdx++)    {        if ((uiIdx >= CACHE_DDR_START_ADDR) && (uiIdx < CACHE_DDR_END_ADDR))        {         m_auiPageTable[uiIdx] = (uiIdx << 20) | 0x00000C1E;        }

        else        {         m_auiPageTable[uiIdx] = (uiIdx << 20) | 0x00000C12;        }    }

}

赞(0)
未经允许不得转载:TI中文支持网 » omapl138 arm中开启cache导致spi flash读写错误
分享到: 更多 (0)