在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 詳解s3c44b0 cpu 8K cache SRAM的初始化

            詳解s3c44b0 cpu 8K cache SRAM的初始化

            作者: 時(shí)間:2012-08-31 來(lái)源:網(wǎng)絡(luò) 收藏
            關(guān)于的cpu內(nèi)部8Kcache 問(wèn)題。主要是因?yàn)閏pu_init()調(diào)用了icache_enable()函數(shù),而該函數(shù)又調(diào)用了_flush_cache()而引發(fā)的問(wèn)題

             _flush_cache()函數(shù)就這么幾行,代碼如下:

            static void s3c44b0_flush_cache(void)
            {
            volatile int i;
            /* flush cycle */
            for(i=0x10002000;i0x10004800;i+=16)
            {
            *((int *)i)=0x0;
            }
            }

            首先莫名的是:計(jì)數(shù)用的變量i要用volatile來(lái)修飾!也許這就是arm或說(shuō)是嵌入式或說(shuō)是基于硬件的C程序與基于PC的C程序不同之處吧。加volatile是為了防止編譯器把i給合諧掉點(diǎn)擊瀏覽下一頁(yè)然后就是賦值句*((int *)i)=0x0:這個(gè)對(duì)寫(xiě)過(guò)或是看過(guò)arm程序的都知道吧,不解釋。

            關(guān)鍵在于for(i=0x10002000;i0x10004800;i+=16)參看s3c44b0手冊(cè),cache set0:3地址是0x1000000~0x10002000;cache tag0:3+LRU地址是0x10002000~0x10004800。剛開(kāi)始以為刷新cache是要向cache set0:3寫(xiě)0,而其實(shí)應(yīng)該向且cache tag0:3+LRU空間寫(xiě)入0來(lái)刷新cache。有點(diǎn)意思的是:cache tag和LRU RAM寫(xiě)入的地址。(參看s3c44b0手冊(cè)關(guān)于cache tag部分)由于cache tag和LRU RAM是16字節(jié)讀寫(xiě)的,故i的增加應(yīng)該是以16為單位的。

            接下來(lái)是設(shè)置非緩沖區(qū)范圍。

            NCACHBE0 = 0xC0000000;
            NCACHBE1 = 0x00000000;

            完全依據(jù)程序員個(gè)人主觀,呵呵 當(dāng)然是要好的想法:比如不應(yīng)該把IO地址放入緩沖區(qū),而應(yīng)該把它放入非緩沖區(qū);不應(yīng)該不把SDRAM放入非緩沖區(qū),而應(yīng)該放入緩沖區(qū)。所以,這里把除SDRAM地址外的所有映射地址做為非緩沖區(qū)。然后依據(jù)地址設(shè)置NCACHBE0和NCACHBE1。NCACHBE0在在這里是有用的,高地址為0x0c000000,低地址為0x00000000;而 NCACHBE1可以理解為不用它,所以起始和終止地址都設(shè)為0

            在設(shè)置完之后就只要開(kāi)啟cpu cache功能就可以。

            reg = SYSCFG;
            reg |= 0x00000006; /* 8kB */
            SYSCFG = reg;

            當(dāng)然,堅(jiān)持一慣的風(fēng)格,操作SYSCFG寄存器方式為:讀---操作---回寫(xiě)。這里把8K內(nèi)部RAM全作為cache

            除了s3c44b0_flush_cache()外,其他都很簡(jiǎn)單,呵呵 不是嗎



            關(guān)鍵詞: s3c44b0 SRAM 初始化

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉