娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月05日(星期四)

2018年06月05日 | 關于S3C2440存儲器地址分配和啟動流程分析

發布者:SerendipityRose 來源: eefocus關鍵字:S3C2440  存儲器  地址分配  啟動流程 手機看文章 掃描二維碼
隨時隨地手機看文章

學習嵌入式,最開始應該了解就是地址空間的分配,真正搞清楚每個地址代表的位置,才有了入門的基礎。

1、地址分配(27根線如何尋找1G空間)

S3C2440集成了豐富了外設控制器(LCD控制器、USB Device控制器、USB Host控制器、NAND FLASH控制器、I2C控制器、SPI控制器等)。要控制這些外設就要設置相應控制器的寄存器以產生相應的驅動時序。學習S3C2440,主要是如何配置寄存器。

下面是S3C2440特殊功能寄存器地址:
#define rBANKCON0  (*(volatileunsigned *)0x48000004) //Boot ROM control
#define rBANKCON1  (*(volatileunsigned *)0x48000008) //BANK1 control
#define rBANKCON2  (*(volatileunsigned *)0x4800000c) //BANK2 cControl

在學習的過程我一直在想這些地址為什么是這樣的?

arm體系并沒有明確指明每個寄存器的地址,而是各個芯片廠家自己設定了每個特殊寄存器的地址。


查S3C2440的數據手冊可知S3C2440可尋址1G的地址范圍,但是S3C2440的地址線只有27根,理論上只能尋址2的27次方等于128M的地址范圍。
通過細致的分析可知:S3C2440通過一個BANK來解決了這個問題。

S3C2440有8個存儲器BANK,引出了8根BANK線(對應nGCS0~ nGCS7),通過這個8根線來選通和關閉不同的存儲器,這樣S3C2440最多就可以連接8個128M的存儲器。對某個BANK地址的訪問實際上就是選通該BANK,于是ARM核只要發出一個地址,然后S3C2440的儲存控制器把該地址解釋成兩部分:一部分是BANK地址,一部分是連接到該BANK存儲器內部的地址就可以訪問了。

這8個存儲器banks:

6 個是ROM,SRAM 等類型存儲器bank (bank0 ---- bank5)
l2 個是可以作為ROM、SRAM、SDRAM 等存儲器bank (bank6 ---- bank7)
l7 個固定的存儲器bank起始地址 (bank0 ---- bank6)
l最后一個bank 的起始地址可調整 (bank7, 接兩片sdram時.接在bank7上的sdram會根據bank6上的結束地址而調整)

而作為32位的CPU,理論上可以使用的地址范圍可以達到2的32次方等于4G,除去上述的1G地址空間,還有一部分是CPU內部寄存器的地址,剩下的地址空間沒有使用。


圖1


(1) S3C2440A的存儲器管理器提供訪問外部存儲器的所有控制信號,27位地址信號(ADDR[26:0])、32位數據信號(DATA[31:0])、8個片選信號(nGCS[7:0])、以及讀/寫控制信號等.
看圖1,我們知道.從0x4000 0000 地址開始,有片內SRAM,片內寄存器,還有未使用的空間.這是都是固定的,不能動的.留給我們用戶的只有0x0000 0000 到 0x3FFF FFFF這1GB的地址空間給我們用. 1GB的地址空間我們需要30根地址線才能完全尋址完畢,2 的 30次方 剛好等于1GB,但是,芯片引腳上只給出了27根地址()ADDR[26:0]),單靠芯片上的27根引腳,它只能控制128M的空間,那3根線去哪里.其實這3根線用在了3-8譯碼器(如:000表示00000001,001表示00000010,010表示00000100,011表示00001000等等)的輸入端去了,而這個3-8譯碼器的輸出端,就是對應這nGCS0~7,對應著8個bank,用于選擇當前處于哪個bank,這樣做的好處在于很模塊化結構化了,便于管理.不會造成一片和手動去分割地址.
(2) bank0---bank5為固定128MB,bank6和bank7的容量可編程改變,可以是2、4、8、16、32、64、128MB
請看圖2


圖2
所以.7個固定存儲器bank(bank0-bank6)起始地址。bank7的開始地址與bank6的結束地址相連接,但是二者的容量必須相等,s3c2440最小可以支支持2MB(2MB一片,只接bank6) 最大支持是256MB(bank6接128MB,bank7接128MB),另需注意一點就是如果,需要接兩片sdram的話,兩片的容量大小必須是一樣的.看圖2就清楚了.
(3) bank0可以作為引導ROM。其數據線寬只能是16位和32位,其它存儲器的數據線寬可以是8位、16位和32位
(4) 地址:
0x0000 0000 ----- 0x3FFF FFFF : 分配了8個bank ,每個bank 有128MB尋址空間, 每個bank也都會有片選信號,這8個bank 的地址提供給nandflash ,norflash,sdram使用(下面sdram的接入我們會祥細講解)
0x4000 0000 ----- 0x47FF FFFF : 其中的前4KB空間,也就是0x4000 0000 到 0x4000 1000 為片內SRAM地址空間,這就是所謂的steppingstone(下面s3c2440啟動時會再討論steppingstone的作用),其它的空間未使用.
0x4800 0000 ----- 0x5FFF FFFF : 特殊功能寄存器,CPU的寄存器都在這時定義和配置.
0x6000 0000 ----- 0xFFFF FFFF : 這大概3G的空間是沒有使用的.


下面的圖片或許更加直觀:

1、綠色那部分為外設地址空間,大小為1G,存在于CPU外部,由于存放數據與程序用的,CPU可通過地址線和數據線從中讀取數據。
2、黃色那部分為功能部件寄存器,大小為3G,存在于CPU內部,即在這些寄存器上寫入一些數據,則可控制相應功能部件的行為。



其中的各功能部件的寄存器地址范圍如表下:


其中的各外設的訪問地址如下表:



2、S3C2440啟動流程

s3c2440支持兩種啟動模式:NAND和非NAND(這里是nor flash)。具體采用的方式取決于OM0、OM1兩個引腳
OM[1:0所決定的啟動方式
OM[1:0]=00時,處理器從NAND Flash啟動
OM[1:0]=01時,處理器從16位寬度的ROM啟動
OM[1:0]=10時,處理器從32位寬度的ROM啟動。
OM[1:0]=11時,處理器從Test Mode啟動。


1當引腳OM0跟OM1有一個是高電平時,這時地址0會映射到外部nGCS0片選的空間,也就是Norflash,程序就會從Norflash中啟動,arm直接取Norflash中的指令運行。2當OM0跟OM1都為低電平,則0地址內部bootbuf(一段4k的SRAM)開始。系統上電,arm會自動把NANDflash中的前4K內容考到bootbuf(也就是0地址),然后從0地址運行。
Arm的啟動都是從0地址開始,所不同的是地址的映射不一樣。在arm開電的時候,要想讓arm知道以某種方式(地址映射方式)運行,不可能通過你寫的某段程序控制,因為這時候你的程序還沒啟動,這時候arm會通過引腳的電平來判斷。


1) 從NorFlash啟動時,與nGCS0相連的NorFlash就被映射到nGCS0片選的Bank0空間,其地址被映射為0x0000 0000;http://blog.csdn.net/shanzhizi


2) 從NandFlash啟動時,S3C2440芯片內部自帶的一塊容量為4K的被稱為“Steppingstone”(起步石)的BootRAM被映射到nGCS0片選的Bank0空間,其地址被映射為0x0000 0000。當系統上電或復位時,程序會從0x0地址處開始執行,因此我們編寫的啟動代碼要確保存儲在0地址處。如果系統的所有程序在編譯鏈接后的大小小于4K,那在系統的啟動代碼中無需考慮將程序從NandFlash搬運到SDRAM這個問題,因為所有的程序在啟動時即全部由NandFlash拷貝至BootSRAM,程序在BootSRAM中運行即可;如果系統的所有程序在編譯鏈接后的大小大于4K,那在系統的啟動代碼中就需要包含一段將系統的全部程序從NandFlash搬運到SDRAM的代碼,因為系統啟動時只將NandFlash的前4K拷貝到了BootSRAM中,還有部分程序在NandFlash中,而程序在NandFlash中是無法運行的,需要將所有程序拷貝至SDRAM并在其中運行,所以系統的啟動代碼中要包含這段有關程序拷貝的代碼,并在所有程序拷貝完成后使程序跳轉到SDRAM中運行。也就是說NandFlash啟動時需要考慮到涉及的兩次搬移,第一次搬運是S3C2440硬件機制自動實現的,無需干預,第二次搬運需要程序員來實現,搬運程序量大小是系統的所有程序。


關鍵字:S3C2440  存儲器  地址分配  啟動流程 引用地址:關于S3C2440存儲器地址分配和啟動流程分析

上一篇:關于S3C2440的地址分配的分析
下一篇:ARM地址重映射機制

推薦閱讀

近日,在廣州某展上得見,一家名叫“有光圖像科技”的深圳企業,以9.8萬的價格推出了自己的產品——視覺叉車AGV,對的,9.8萬元!這個價格,AGV企業家們聽了,也許會手一抖、心中起疑,繼而有點憤怒——怎么做到的?怎么可能?這價格是來破壞市場的?然而,事實真相是有待考察的,現實情況是有待探究的。這9.8萬元的叉車AGV,是擺脫暴利的市場價格?還是在...
全球最大的汽車半導體供應商恩智浦半導體(NXP Semiconductors N.V.)(納斯達克代碼:NXPI)與中國自動駕駛軟件解決方案商Momenta今日宣布將合作開發汽車級駕駛員監測解決方案(DMS),攜手提升道路安全。該解決方案將為駕駛員注意力監測技術的發展提供基礎,并助力汽車制造商滿足下一代新車評價規程(NCAP)的要求。 DMS與高級駕駛輔助系統(ADAS)密不...
諾基亞日前宣布,其液冷5G AirScale基站解決方案已幫助芬蘭移動運營商Elisa減少了碳排放。據諾基亞稱,該技術使基站的潛在能源支出減少了30%,碳排放減少了80%。該公司表示,這是液體冷卻技術首次應用于5G,但在未來,它可以幫助移動運營商實現其可持續發展承諾。在減少能源和排放的同時,諾基亞表示,其液體冷卻技術是靜音的,無需維護。此外,與標準主...
集微網6月5日消息,昨天iQOO產品經理宋紫薇曬出了iQOO 7獲得的紅點設計獎狀,她表示iQOO團隊會再接再厲,未來為大家帶來更多創新和好的設計。據了解,iQOO 7采用簡潔干練且精準有序的設計,后蓋采用AG磨砂工藝,觸感細膩不易粘留指紋;攝像模組的Tone-in-Tone同色異構設計理念,帶來強烈視覺沖擊,模組長寬比例關系與機身整體比例一致,中框部分采用“航...

史海拾趣

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 尚志市| 宜城市| 姚安县| 鹤山市| 德惠市| 广饶县| 舞钢市| 剑河县| 淳安县| 茌平县| 广州市| 抚宁县| 从江县| 贺兰县| 兴和县| 武川县| 图片| 长子县| 嫩江县| 无为县| 黑河市| 卓资县| 托克逊县| 阳东县| 衡阳县| 洪江市| 荥阳市| 黄浦区| 二连浩特市| 措勤县| 陆河县| 肥西县| 凤台县| 康乐县| 望城县| 常山县| 徐水县| 商洛市| 宁陵县| 平陆县| 韶山市|