在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            S3C6410的DRAM控制器

            作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏
            我們?cè)陧?xiàng)目中更換了DRAM,所以需要重新配置S3C6410DRAM控制器,結(jié)果發(fā)現(xiàn)S3C6410中的DRAM控制器還是挺復(fù)雜的。


            S3C6410支持兩個(gè)DRAM片選,可以分別接最大256MB的內(nèi)存,該處理器用的DRAM控制器是來(lái)自ARM的PrimeCell Dynamic Memory Controller(PL340)。只看S3C6410的Datasheet中的DRAM部分介紹是不夠的,你還需要看PL340的技術(shù)參考文檔,這個(gè)文檔網(wǎng)上搜索一下就有了。想完全了解6410的DRAM控制器,必須兩篇文檔都看。我都看了,雖然沒(méi)完全了解,但是比看6410的datasheet要強(qiáng)多了。

            我用的是mobile DDR-SDRAM,所以在這里大概介紹一下寄存器及配置流程。先介紹一下寄存器:

            1. DRAM Controller Status Register (Address: 0x7E001000)
            DRAM狀態(tài)寄存器,這是一個(gè)RO寄存器,用于讀取DRAM的狀態(tài)。
            NameBitDescription
            Memory chips[8:7]01=2 chips
            Memory type[6:4]100=MSDR, SDR, MDDR and DDR
            Memory width[3:2]00=16-bit01=32-bit
            Controller Status[1:0]00=config01=ready10=paused11=low-power
            實(shí)際上,讀到的有用信息就是Controller Status和Memory width。

            2. DRAM Controller Command Register (Address: 0x7E001004)
            DRAM命令寄存器,設(shè)置DRAM的工作狀態(tài)。
            NameBitDescription
            Memc_cmd[2:0]000=Go001=Sleep010=Wakeup011=Pause
            100=Configure
            最開(kāi)始應(yīng)該配置為0x4,是處于Configure狀態(tài)。在配置完所有的DRAM之后,將該寄存器設(shè)置為0x0,處于運(yùn)行狀態(tài)。

            3. Direct Command Register (Address: 0x7E001008)
            DRAM命令寄存器,用于發(fā)送命令到DRAM和訪問(wèn)DRAM中的MRS和EMRS寄存器。
            NameBitDescription
            Extended memory command[22]擴(kuò)展命令,該bit用于連接下面的Memory command[19:18],從而組成DRAM命令
            Chip number[21:20]00=chip_001=chip_110=chip_211=chip_3
            Memory command[19:18]和Extended Memory command組成DRAM命令字
            000=PrechargeAll001=Autorefresh
            010=MRS/EMRS訪問(wèn)011=NOP
            100=Deep Power Down
            Bank address[17:16]訪問(wèn)MRS和EMRS的時(shí)候,映射為Bank地址位
            Address_13_to_0[13:0]訪問(wèn)MRS和EMRS的時(shí)候,映射為memory address[13:0]
            通過(guò)該寄存器初始化DRAM,先設(shè)置為NOP模式,然后設(shè)置為PrechargeAll進(jìn)行充電,然后設(shè)置EMRS和MRS寄存器,一般是這么一個(gè)流程。具體的要參見(jiàn)你所使用的DRAM的datasheet。

            4. Memory Configuration Register (Address: 0x7E00100C)
            DRAM的配置寄存器,這個(gè)與需要參照你所使用的DRAM的datasheet。
            NameBitDescription
            Memory burst[17:15]設(shè)置Burst大小
            000=Burst 1001=Burst 2010=Burst4
            011=Burst 8100=Burst 16
            Stop_mem_clock沒(méi)有訪問(wèn)時(shí),Memory Clock自動(dòng)停止
            Power_down_prd[21:20]自動(dòng)掉電所需的時(shí)鐘周期
            AP bit[19:18]0=Address bit 101=Address bit 8
            Row bits[17:16]行地址
            000=11 bits001=12 bits010=13bits
            011=14 bits100=15bits101=16bits
            Column bits[13:0]列地址
            000=8 bits001=9 bits010=10 bits
            011=11 bits100=12 bits
            該寄存器肯定是要配的,看看DRAM的datasheet就知道了。

            5. Refresh Period Register (Address: 0x7E001010)
            DRAM的刷新頻率寄存器,用于配置刷新頻率的。
            NameBitDescription
            Refresh period[14:0]多少個(gè)Memory的時(shí)鐘周期

            6. CAS Latency Register (Address: 0x7E001014)
            DRAM的CAS延時(shí)寄存器,一定要配,參考DRAM的datasheet。
            NameBitDescription
            CAS Latency[3:1]CAS延時(shí)多少個(gè)時(shí)鐘周期
            CAS half cycle[0]0=0周期偏移1=半周期偏移
            對(duì)于MDDR和SDR只能設(shè)置為0

            7. t_dqss/t_mrd/t-ras/t_rc/t_rcd/t_rfc/t_rp/t_rrd/t_wr/t_wtr/t_xp/t_xsr/t_esr Registers (Address: 0x7E001018---0x7E001048)
            DRAM操作中所需時(shí)間和延時(shí)寄存器,這里不作過(guò)多介紹,具體可以參考PL340文檔。

            8. Memory Configuration 2 Register (Address: 0x7E00104C)
            DRAM的配置寄存器2。
            NameBitDescription
            Read delay[12:11]讀延時(shí)
            00=0 cycle01=1 cycle10,11=2 cycle
            Memory type[10:8]DRAM類(lèi)型
            000=SDR001=DDR011=Mobile DDR
            Memory width[7:6]00=16 bits01=32 bits
            cke_init[3]復(fù)位后,設(shè)置CKE輸出的值
            dqm_init[2]復(fù)位后,設(shè)置DQM輸出的值
            a_gt_m_sync[1]ACLK頻率高于MCLK時(shí),設(shè)置為1
            Sync[0]ACLK和MCLK同步時(shí),設(shè)置為1

            9. CHIP_N_CFG Register (Address: 0x7E001200/0x7E001204)
            DRAM的Chip配置寄存器,用于片選decoding設(shè)置
            NameBitDescription
            BRC_RBC[16]DRAM結(jié)構(gòu)
            0=Row-Bank-Column
            1=Bank-Row-Column
            Address match[15:8]片選地址比較值
            Address mask[7:0]片選地址掩碼


            上面介紹了一些寄存器,還有一些寄存器由于沒(méi)有用到,所以沒(méi)有去了解。下面給一個(gè)DRAM初始化的例子:

            WriteReg: 0x7e0010040x4//設(shè)置DRAM控制器狀態(tài)為Configure
            WriteReg: 0x7e0010100x40d//設(shè)置DRAM的刷新周期
            WriteReg: 0x7e0010140x6//設(shè)置CAS延時(shí)
            WriteReg: 0x7e0010180x3//設(shè)置t_DQSS
            WriteReg: 0x7e00101c0xf//設(shè)置t_MRD
            WriteReg: 0x7e0010200xf//設(shè)置t_RAS
            WriteReg: 0x7e0010240xf//設(shè)置t_RC
            WriteReg: 0x7e0010280x1f//設(shè)置t_RCD
            WriteReg: 0x7e00102c0x21f//設(shè)置t_RFC
            WriteReg: 0x7e0010300xf//設(shè)置t_RP
            WriteReg: 0x7e0010340xf//設(shè)置t_RRD
            WriteReg: 0x7e0010380x7//設(shè)置t_WR
            WriteReg: 0x7e00103c0x7//設(shè)置t_WTR
            WriteReg: 0x7e0010400xf//設(shè)置t_XP
            WriteReg: 0x7e0010440x1f//設(shè)置t_XSR
            WriteReg: 0x7e0010480x1f//設(shè)置t_ESR
            WriteReg: 0x7e00100c0x10012//設(shè)置DRAM的Column, Row等屬性
            WriteReg: 0x7e00104c0x0b45//設(shè)置DRAM的buswidth,type等屬性
            WriteReg: 0x7e0012000x150f8//設(shè)置RBC以及片選屬性
            WriteReg: 0x7e0013040x0//設(shè)置DQS延時(shí)
            WriteReg: 0x7e0010080xc0000//發(fā)送NOP命令到DRAM
            WriteReg: 0x7e0010080x0//發(fā)送Precharge命令到DRAM
            WriteReg: 0x7e0010080x40000//發(fā)送Autorefresh命令到DRAM
            WriteReg: 0x7e0010080x40000//發(fā)送Autorefresh命令到DRAM
            WriteReg: 0x7e0010080xa0000//設(shè)置DRAM的EMRS寄存器
            WriteReg: 0x7e0010080x80032 //設(shè)置DRAM的MRS寄存器
            WriteReg: 0x7e0010040x0//設(shè)置DRAM控制器開(kāi)始運(yùn)行


            關(guān)于DRAM控制器的配置要參見(jiàn)所使用的DRAM的Datasheet,了解DRAM的結(jié)構(gòu)和初始化過(guò)程,才能正確配置。S3C6410的DRAM控制器比較復(fù)雜,有些寄存器也不是很理解,在ARM的PL340的文檔中也沒(méi)做太多解釋。
            我的建議就是能不換DRAM最好,換了也要盡量和S3C6410板上的DRAM相近。


            關(guān)鍵詞: S3C6410DRAM控制

            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉