日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

2440内存管理

發(fā)布時(shí)間:2023/12/10 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2440内存管理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

title: 2440內(nèi)存管理
tags: ARM
date: 2018-10-17 19:08:49
---

2440內(nèi)存管理

特性

  • 大/小端(通過(guò)軟件選擇)

  • 地址空間:每個(gè) Bank 有 128M 字節(jié)(總共 1G/8 個(gè) Bank)

  • 除了 BANK0(16/32 位)之外【引導(dǎo)ROM,其總線寬度由硬件接線決定,在第一個(gè) ROM 訪問(wèn)前決定 BANK0 的總線寬度】,其它全部 BANK 都可編程訪問(wèn)寬度(8/16/32 位)

  • 所有存儲(chǔ)器 Bank 的訪問(wèn)周期可編程

  • 外部等待擴(kuò)展總線周期

  • 支持 SDRAM 自刷新和掉電模式

  • 總共 8 個(gè)存儲(chǔ)器 Bank

    • 6 個(gè)存儲(chǔ)器 Bank 為 ROM,SRAM 等
    • 其余 2 個(gè)存儲(chǔ)器 Bank 為 ROM,SRAM,SDRAM 等
  • 7 個(gè)固定的存儲(chǔ)器 Bank 起始地址

  • 1 個(gè)可變的存儲(chǔ)器 Bank 起始地址并 Bank 大小可編程

    • bank7,為了與bank6組成雙通道,所以其起始地址是bank6地址的尾地址,bank6=bank7大小

內(nèi)存地址分配

工作方式

GPIO/門(mén)電路接口、協(xié)議類(lèi)接口、內(nèi)存類(lèi)接口都屬于CPU的統(tǒng)一編址內(nèi)存控制器根據(jù)不同的地址地址范圍,發(fā)出不同的片選引腳.比如當(dāng)CPU發(fā)出的指令的地址范圍處于0x20000000 - 0x28000000,內(nèi)存控制器就會(huì)使nGCS4處于低電平.

對(duì)于Nand Flash,在原理圖上它的地址線并沒(méi)有連接到CPU,因此它不參與CPU的統(tǒng)一編址。但它的數(shù)據(jù)線也接到了數(shù)據(jù)總線上,為了防止干擾,它也有一個(gè)片選信號(hào)(CE)。當(dāng)CPU訪問(wèn)Nand Flash時(shí),Nand Flash控制器才會(huì)片選Nand Flash,讓其接收數(shù)據(jù)總線上的數(shù)據(jù)。

位寬與基址

位寬分為8/16/32,程序的最小存儲(chǔ)單位為1個(gè)字節(jié)也就是8位寬.假設(shè)地址信號(hào)為【An,An-1......A3,A2,A1,A0】

位寬(數(shù)據(jù)線)地址線
8【An,An-1......A3,A2,A1,A0】
16【An,An-1......A3,A2,A1】
32【An,An-1......A2】

所謂位寬,也就是一個(gè)存儲(chǔ)單元存儲(chǔ)了幾個(gè)位.比如32位的,也就是一次取值是4字,地址序列為[0,4,8,12]>[0b0000,0000>0b0000,0100>0b0000,1000>0b0000,1100],也就是低2位為0.

基址,也就是片選信號(hào)在哪里,基址就在哪里.

尋址范圍

尋址范圍與位寬無(wú)關(guān),只與地址線有關(guān).比如接了[A0,A2],那么就能尋址[0,1,4,5]也就是尋址[0--5].如果地址線是[A0--A20],尋址到[0----2^21]也就是2M

引腳描述

  • nWE OUTPUT nWE (Write Enable) indicates that the current bus cycle is a write cycle.
  • nOE OUTPUT nOE (Output Enable) indicates that the current bus cycle is a read cycle.
  • nWAIT INPUT nWAIT requests to prolong a current bus cycle. As long as nWAIT is L, the
    current bus cycle cannot be completed.

內(nèi)存接口的時(shí)序

NorFLASH

開(kāi)發(fā)板使用的NORFLASH是MX29LV160DBTI,2M大小,接在nGCS0,所以基址是0.

Taa 地址信號(hào)Taa后數(shù)據(jù)有效70ns Tce 片選信號(hào)后Tce后數(shù)據(jù)有效70ns Toe 數(shù)據(jù)在Oe后Toe后有效30ns Toh 數(shù)據(jù)保持時(shí)間0ns Tdf 在Tdf內(nèi)數(shù)據(jù)不穩(wěn)定,也就是不允許訪問(wèn)其他芯片,30ns一般不需要理會(huì)這個(gè),因?yàn)樵俅卧L問(wèn)的時(shí)候,還需要時(shí)序前面的Taa等,等到穩(wěn)定的時(shí)候,數(shù)據(jù)已經(jīng)穩(wěn)定了 Trc 讀周期時(shí)間,最小70ns,也就是速度性能 70ns

為了簡(jiǎn)單把地址數(shù)據(jù)(Addresses),片選信號(hào)(CE#),讀信號(hào)(OE#),同時(shí)發(fā)出,然后讓它們都等待70ns(等待信號(hào)有效)。對(duì)應(yīng)S3C2440的Nor Flash控制器的讀時(shí)序圖,需要讓地址信號(hào)A[24:0]、片選信號(hào)nGCS、讀信號(hào)nOE同時(shí)發(fā)出,保持Tacc大于等于70ns。然后設(shè)置讀之后的那些時(shí)序tdf,toh為0[因?yàn)橄乱淮问褂脮?huì)又有片選的70ns]

位寬設(shè)置

為什么上電就能使用NOR

這里的Tacc默認(rèn)值是111最大值為14個(gè)時(shí)鐘,這也是為什么我們不用設(shè)置NORFLASH就能開(kāi)機(jī)使用.上電的時(shí)候是使用晶振12M,也就是tacc=14*Hclk=1/12M*14=1166ns>70ns

設(shè)置寄存器

  • BWSCON中Bank0不需要設(shè)置
  • 將HCLK設(shè)置為100MHz,T=1000/100=10ns,Tacc需要大于等于70ns,因此設(shè)置Tacc等于101,8個(gè)clocks即可。
  • BANKCONn其他位不需要設(shè)置,保持0,也就是說(shuō)將地址、片選、地址同時(shí)發(fā)出,讀后不保持時(shí)間.
void bank0_tacc_set(int val) {BANKCON0 = val << 8;//設(shè)置【10:8】 }

測(cè)試:燒錄到NOR啟動(dòng),實(shí)際測(cè)了一下使用5個(gè)周期都是可以的

SDRAM

內(nèi)存知識(shí)補(bǔ)遺

SDRAM學(xué)習(xí)筆記(二)

  • P-Bank, 物理位寬,要等同于CPU的數(shù)據(jù)總線寬度,也是北橋內(nèi)存總線寬度,適用于SDRAM以及以前產(chǎn)品,在RDRAM中以通道代替
  • SDRAM synchronous Dynamic Random Access Memory 同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器
  • SIMM single In-line Memory moudle 單列內(nèi)存模組
  • DIMM double in-line Memory moudle 雙列內(nèi)存模組
  • SDRAM 芯片位寬 SDRAM芯片的數(shù)據(jù)總線
  • 內(nèi)存顆粒==內(nèi)存芯片
  • L-bank logic bank ,SDRAM芯片內(nèi)部的bank,一般4個(gè)
  • 內(nèi)存芯片容量=行*列*L-bank*位寬
  • 引腳
    • Dqn 數(shù)據(jù)總線
    • An 行列地址線
    • DQM 數(shù)據(jù)掩碼
    • CAS# 列選中
    • RAS# 行選中
    • CK 時(shí)鐘信號(hào)
    • CKE 時(shí)鐘有效
    • Ban L-bank線
    • WE# 寫(xiě)有效

使用簡(jiǎn)介

首先器件上電----對(duì)SDRAM進(jìn)行初始化(因?yàn)閮?nèi)部有邏輯電路部分,狀態(tài)機(jī)部分)----對(duì)SDRAM進(jìn)行200us的穩(wěn)定期(參數(shù)INIT_PER)----預(yù)充電,對(duì)所有的L-Bank進(jìn)行預(yù)充電(預(yù)充電時(shí)間間隔tRP)----8個(gè)預(yù)先刷新周期(手冊(cè)規(guī)定至少2個(gè)周期來(lái)刷新邏輯塊,在設(shè)計(jì)中一般直接給8個(gè)周期,參數(shù)REF_PER)----模式寄存器的配置(行選通周期參數(shù)tRCD,由于SDRAM內(nèi)部結(jié)構(gòu)導(dǎo)致更新存儲(chǔ)陣列需要時(shí)間---數(shù)據(jù)輸出延時(shí)時(shí)間tCL---突發(fā)長(zhǎng)度BL設(shè)置) https://www.cnblogs.com/raymon-tec/p/5147217.html

初始化協(xié)商 MSR 模式寄存器

SDRAM 在上電的時(shí)候需要BIOS對(duì)其初始化設(shè)置MSR 模式,也就是協(xié)商一些參數(shù),下圖是板載的模式字

  • 操作模式
  • CAS 潛伏期 列地址潛伏期,設(shè)置后發(fā)送列地址后cas周期后發(fā)送數(shù)據(jù)
  • BT 突發(fā)傳輸模式
  • BL 突發(fā)長(zhǎng)度

尋址

[(允許同時(shí))CS片選,L-bank選擇,行有效]列有效

數(shù)據(jù)讀

有個(gè)參數(shù) CAS Latency,CAS 潛伏期=又被稱(chēng)為讀取潛伏期(RL,Read Latency),這個(gè)在初始化時(shí)設(shè)定

數(shù)據(jù)寫(xiě)

注意參數(shù) twr 回寫(xiě)時(shí)間

突發(fā)模式

連續(xù)讀取,只需要發(fā)送起始列地址,BL在協(xié)商的時(shí)候規(guī)定了

板載SDRAM

JZ2440連接的是EM63A165TS-6G,其規(guī)格是16M x 16 bit=32M,兩通道也就是64M

4M word x 16-bit x 4-bank,說(shuō)明內(nèi)部4個(gè)bank,位寬16

CLK CKE Clock Enable,時(shí)鐘使能 BA0,BA1 Bank Activate,Bank選擇 A0-A12 Address Inputs,Row(行)=A0-A12,column= A0-A8 with A10Duringa Precharge command, A10 is sampled to determine if all banks are to be precharged(A10 = HIGH). CS# Chip Select RAS# Row Address Strobe: CAS# Column Address Strobe WE# Write Enable LDQM,UDQM Data Input/Output Mask 掩碼 DQ0-DQ15 Data I/O

地址計(jì)算

  • 行=A0~A12,列=A0~A8,16位位寬,一個(gè)單元兩個(gè)字節(jié),4個(gè)Bank,所以1個(gè)bank=2^13*2^9*2/1024/1024=8M,4個(gè)Bank=32M.

  • 32位尋址,所以要忽略CPU2440的低兩位地址線[0,1]

  • bank線如何確認(rèn)?總共是雙通道,32位位寬,所以實(shí)際上選中一個(gè)bank其實(shí)是選中了兩個(gè)物理的Bank=16M=2^24,所以地址線在[24,25],或者也可以這么理解

    尋址64M,4個(gè)片選也就是64/4=16M,16M=2^(20+4),所以0->2^23=16M,其再高1位就是24線了
  • BANK6的起始地址為0x30000000,所以SDRAM的訪問(wèn)地址為0x30000000~低0x33FFFFFF,共64MB

程序設(shè)計(jì)

時(shí)序參數(shù)

板子只用到了Bank6的片選,BANK0--BANK5只需要設(shè)置BWSCON和BANKCONx(x為0~5)兩個(gè)寄存器;BANK6、BANK7外接SDRAM時(shí),除BWSCON和BANKCONx(x為6、7)外,還要設(shè)置REFRESH、BANKSIZE、MRSRB6、MRSRB7等4個(gè)寄存器。

void sdram_init(void) {BWSCON = 0x22000000; //選擇sdram,32位寬BANKCON6 = 0x17001; //時(shí)間參數(shù)BANKCON7 = 0x17001;REFRESH = 0x8404f5; //刷新周期BANKSIZE = 0xb1; //size=64MMRSRB6 = 0x20; //CASMRSRB7 = 0x20; }//測(cè)試SDRAM地址 int sdram_test(void) {volatile unsigned char *p = (volatile unsigned char *)0x30000000;int i;// write sdramfor (i = 0; i < 1000; i++)p[i] = 0x55;// read sdramfor (i = 0; i < 1000; i++)if (p[i] != 0x55)return -1;return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/zongzi10010/p/10023594.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的2440内存管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。