2440內存管理


title: 2440內存管理
tags: ARM
date: 2018-10-17 19:08:49
---

2440內存管理

特性

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

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

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

  • 所有存儲器 Bank 的訪問周期可編程

  • 外部等待擴展總線周期

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

  • 總共 8 個存儲器 Bank

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

  • 1 個可變的存儲器 Bank 起始地址并 Bank 大小可編程

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

    mark

內存地址分配

mark

工作方式

GPIO/門電路接口、協議類接口、內存類接口都屬于CPU的統一編址內存控制器根據不同的地址地址范圍,發出不同的片選引腳.比如當CPU發出的指令的地址范圍處于0x20000000 - 0x28000000,內存控制器就會使nGCS4處于低電平.

對于Nand Flash,在原理圖上它的地址線并沒有連接到CPU,因此它不參與CPU的統一編址。但它的數據線也接到了數據總線上,為了防止干擾,它也有一個片選信號(CE)。當CPU訪問Nand Flash時,Nand Flash控制器才會片選Nand Flash,讓其接收數據總線上的數據。

位寬與基址

位寬分為8/16/32,程序的最小存儲單位為1個字節也就是8位寬.假設地址信號為【An,An-1......A3,A2,A1,A0】

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

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

基址,也就是片選信號在哪里,基址就在哪里.

尋址范圍

尋址范圍與位寬無關,只與地址線有關.比如接了[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.

內存接口的時序

mark

NorFLASH

開發板使用的NORFLASH是MX29LV160DBTI,2M大小,接在nGCS0,所以基址是0.

mark

mark

Taa 地址信號Taa后數據有效70ns
Tce 片選信號后Tce后數據有效70ns
Toe 數據在Oe后Toe后有效30ns
Toh 數據保持時間0ns
Tdf 在Tdf內數據不穩定,也就是不允許訪問其他芯片,30ns一般不需要理會這個,因為再次訪問的時候,還需要時序前面的Taa等,等到穩定的時候,數據已經穩定了
Trc 讀周期時間,最小70ns,也就是速度性能 70ns

為了簡單把地址數據(Addresses),片選信號(CE#),讀信號(OE#),同時發出,然后讓它們都等待70ns(等待信號有效)。對應S3C2440的Nor Flash控制器的讀時序圖,需要讓地址信號A[24:0]、片選信號nGCS、讀信號nOE同時發出,保持Tacc大于等于70ns。然后設置讀之后的那些時序tdf,toh為0[因為下一次使用會又有片選的70ns]

mark

位寬設置

mark

為什么上電就能使用NOR

這里的Tacc默認值是111最大值為14個時鐘,這也是為什么我們不用設置NORFLASH就能開機使用.上電的時候是使用晶振12M,也就是tacc=14*Hclk=1/12M*14=1166ns>70ns

設置寄存器

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

測試:燒錄到NOR啟動,實際測了一下使用5個周期都是可以的

SDRAM

內存知識補遺

SDRAM學習筆記(二)

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

使用簡介

首先器件上電----對SDRAM進行初始化(因為內部有邏輯電路部分,狀態機部分)----對SDRAM進行200us的穩定期(參數INIT_PER)----預充電,對所有的L-Bank進行預充電(預充電時間間隔tRP)----8個預先刷新周期(手冊規定至少2個周期來刷新邏輯塊,在設計中一般直接給8個周期,參數REF_PER)----模式寄存器的配置(行選通周期參數tRCD,由于SDRAM內部結構導致更新存儲陣列需要時間---數據輸出延時時間tCL---突發長度BL設置) https://www.cnblogs.com/raymon-tec/p/5147217.html

初始化協商 MSR 模式寄存器

SDRAM 在上電的時候需要BIOS對其初始化設置MSR 模式,也就是協商一些參數,下圖是板載的模式字

  • 操作模式
  • CAS 潛伏期 列地址潛伏期,設置后發送列地址后cas周期后發送數據
  • BT 突發傳輸模式
  • BL 突發長度

mark

尋址

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

數據讀

有個參數 CAS Latency,CAS 潛伏期=又被稱為讀取潛伏期(RL,Read Latency),這個在初始化時設定

數據寫

注意參數 twr 回寫時間

突發模式

連續讀取,只需要發送起始列地址,BL在協商的時候規定了

板載SDRAM

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

4M word x 16-bit x 4-bank,說明內部4個bank,位寬16

CLK
CKE         Clock Enable,時鐘使能
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

mark

mark

地址計算

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

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

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

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

mark

mark

程序設計

時序參數

mark

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

void sdram_init(void)
{BWSCON = 0x22000000;    //選擇sdram,32位寬BANKCON6 = 0x17001;     //時間參數BANKCON7 = 0x17001;REFRESH  = 0x8404f5;    //刷新周期BANKSIZE = 0xb1;        //size=64MMRSRB6   = 0x20;        //CASMRSRB7   = 0x20;
}//測試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;
}

mark

轉載于:https://www.cnblogs.com/zongzi10010/p/10023594.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252940.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252940.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252940.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#設計模式之十二代理模式(Proxy Pattern)【結構型】

一、引言 今天我們要講【結構型】設計模式的第七個模式&#xff0c;也是“結構型”設計模式中的最后一個模式&#xff0c;該模式是【代理模式】&#xff0c;英文名稱是&#xff1a;Proxy Pattern。還是老套路&#xff0c;先從名字上來看看。“代理”可以理解為“代替”&#…

IPv6檢測

1&#xff09;判斷服務器是否支持IPv6 &#xff1a; http://ipv6-test.com/validate.php 2&#xff09;檢測當前設備打開網站的連接方式是IPv4還是IPv6&#xff1a; http://ipv6.sjtu.edu.cn/ 轉載于:https://www.cnblogs.com/superbobo/p/6687605.html

百度首席科學家吳恩達宣布將從百度離職

海外網3月22日電 據媒體消息&#xff0c;百度首席科學家吳恩達&#xff08;Andrew Ng&#xff09;在英文自媒體平臺Medium及微博、Twitter等個人社交平臺發布公開信&#xff0c;宣布自己將從百度離職&#xff0c;開啟自己在人工智能領域的新篇章。 吳恩達是人工智能和機器學習…

CentOS7.5 使用二進制程序部署Kubernetes1.12.2(三)

一、安裝方式介紹 1、yum 安裝 目前CentOS官方已經把Kubernetes源放入到自己的默認 extras 倉庫里面&#xff0c;使用 yum 安裝&#xff0c;好處是簡單&#xff0c;壞處也很明顯&#xff0c;需要官方更新 yum 源才能獲得最新版本的軟件&#xff0c;而所有軟件的依賴又不能自己指…

Oracle存儲過程--案例

限額控制 CREATE OR REPLACE PACKAGE BODY NP_PCKG_MERCHANT_LIMIT ASPROCEDURE CHECK_LIMIT (in_iplCode IN VARCHAR2, --行業編號in_iplState IN VARCHAR2, --卡類型in_posNo IN VARCHAR2, --商戶號in_tranAmt IN …

SpringMVC—對Ajax的處理(含 JSON 類型)(2)

這里編寫了一個通用的類型轉換器&#xff1a;用來轉換形如&#xff1a; firstNamejack&lastNamelily&gender1&foodsSteak&foodsPizza&quoteEnteryourfavoritequote!&educationJr.High&tOfDDay 到 Student 對象。/*** author solverpeng* create 20…

馬來西亞熱情擁抱阿里巴巴 馬云倡議的eWTP首次落地海外

摘要&#xff1a;3月22日&#xff0c;馬來西亞總理納吉布與阿里巴巴集團董事局主席馬云一同出現在吉隆坡一場盛大啟動儀式上&#xff0c;他們將共同見證馬云的eWTP理念落地馬來西亞。 3月22日&#xff0c;在邀請阿里巴巴集團董事局主席馬云、阿里巴巴集團CEO張勇、螞蟻金服集團…

征名公布|Qtum量子鏈企業版—Unita 中文名征集圓滿落幕

Qtum量子鏈基金會為感謝社區與為了充分調動社區積極性&#xff0c;調動社區力量&#xff0c;在Qtum企業版完整公布之前將中文名留給社區成員們集思廣益&#xff0c;其中截止2018年11月26日&#xff0c;我們征集到數百份來自社區的優秀名稱&#xff0c;在經過基金會層層嚴肅認真…

隨便玩玩之PostgreSQL(第一章)PostgreSQL簡介

隨便玩玩之PostgreSQL 未經授權不得轉載 第1章PostgreSQL簡介 1.1什么是PostgreSQLPostgresql是數據庫&#xff08;軟件&#xff09;。The worlds most advanced open source database.世界上最先進的開源數據庫。 1.2PostgreSQL的優勢隨便用、不要錢 比MySQL好&#xff0c;媲美…

bootstrap 利用jquery 添加disabled屬性

添加&#xff1a; $("#id").attr("disabled","disabled"); 去除&#xff1a; $("#id").removeattr("disabled");轉載于:https://www.cnblogs.com/duyunchao-2261/p/6692141.html

生產環境中Oracle常用函數總結

1>to_char,將日期轉換為字符&#xff1b;add_months,在第一個參數的日期上加或者減第二個參數的值&#xff1b;select dkzh,jkhtbh,yhkrq,dkffrq,shqs,dqyqcs,to_char(add_months(dkffrq,shqsdqyqcs1),yyyymm) from grdk_dk_zz a where a.dkzt in(02,03) and jgbm like 01||…

國內VR內容分發平臺探討:未來充滿變數,一切才剛開始

移動VR搞內容分發平臺的思維源自于移動互聯網時代&#xff0c;App Store成就了iPhone和蘋果;安卓端谷歌應用商店稱霸全球&#xff0c;唯獨進不了中國&#xff0c;于是國內涌現了一大批移動分發平臺&#xff0c;91無線、豌豆莢、安卓應用商店、機鋒、安智、小米商店……最后大部…

Dockerfile構建容器鏡像 - 運維筆記

在Docker的運用中&#xff0c;從下載鏡像&#xff0c;啟動容器&#xff0c;在容器中輸入命令來運行程序&#xff0c;這些命令都是手工一條條往里輸入的&#xff0c;無法重復利用&#xff0c;而且效率很低。所以就需要一 種文件或腳本&#xff0c;我們把想執行的操作以命令的方式…

201421123042 《Java程序設計》第8周學習總結

1. 本周學習總結 以你喜歡的方式&#xff08;思維導圖或其他&#xff09;歸納總結集合相關內容。 2. 書面作業 1. ArrayList代碼分析 1.1 解釋ArrayList的contains源代碼 源代碼&#xff1a; 答&#xff1a;查找對象是否再數組中&#xff0c;并且返回在數組中的下標。如果不在數…

Linux驅動靜態編譯和動態編譯方法詳解

內核源碼樹的目錄下都有兩個文檔Kconfig和Makefile。分布到各目錄的Kconfig構成了一個分布式的內核配置數據庫&#xff0c;每個Kconfig分別描述了所屬目錄源文檔相關的內核配置菜單。在內核配置make menuconfig時&#xff0c;從Kconfig中讀出菜單&#xff0c;用戶選擇后保存到.…

Linux學習-11月12日(Apache安裝)

2019獨角獸企業重金招聘Python工程師標準>>> 11.6 MariaDB安裝 11.7/11.8/11.9 Apache安裝 擴展 apache dso https://yq.aliyun.com/articles/6298 apache apxs https://wizardforcel.gitbooks.io/apache-doc/content/51.html apache工作模式 https://blog.csdn.…

11. sql DDL

SQL分為5大類&#xff1a; DDL:數據定義語言 DCL:數據控制語言 DML:數據操縱語言 DTL:數據事務語言 DQL:數據查詢語言 1、DDL(data definition language):create,drop,alter,rename to 數據類型 ①、數字類型&#xff0c;可以數學運算 number&#xff08;4&#xff09;代表整數…

[bzoj2243][SDOI2011]染色

來自FallDream 的博客&#xff0c;未經允許&#xff0c;請勿轉載&#xff0c;謝謝qaq 給定一棵有n個節點的無根樹和m個操作&#xff0c;操作有2類&#xff1a; 1、將節點a到節點b路徑上所有點都染成顏色c&#xff1b; 2、詢問節點a到節點b路徑上的顏色段數量&#xff08;連續相…

Linux學習筆記——例說makefile 增加宏定義

從學習C語言開始就慢慢開始接觸makefile&#xff0c;查閱了很多的makefile的資料但總感覺沒有真正掌握makefile&#xff0c;如果自己動手寫一個makefile總覺得非常吃力。所以特意借助博客總結makefile的相關知識&#xff0c;通過例子說明makefile的具體用法。 例說makefile…

Android基本組件是什么?

1、ImageView繼承View組件,不單單用于顯示圖片,用 XML代碼 編寫的Drawable也可以顯示出來。其中的XML屬性 android:scaleType(設置圖片如何縮放或移動以適應ImageView的大小) 有很多的屬性值,如:matrix(使用矩形方式進行縮放)fitXY(對圖片橫向縱向縮放)center(圖片放在ImageVie…