歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> S3C6410存儲器映射

S3C6410存儲器映射

日期:2017/3/1 10:56:48   编辑:Linux編程

1.引導鏡像區 0x0000_0000~0x07FF_FFFF

2.內部存儲區

(1) 內部ROM 0x0800_0000~0x0BFF_FFFF

(2) 內部SRAM 0x0C00_0000~0x0FFF_FFFF

3.靜態存儲區 0x1000_0000~0x3FFF_FFFF

4.動態存儲區 0x4000_0000~0x6FFF_FFFF

S3C6410的物理內存分成Memory和Pheriperal兩部分,地址范圍分別為0x0~0x6fffffff和0x7fffffff。系統通過 SPINE總線訪問Memory空間,通過PERI總線訪問Pheriperal空間。而為了適應不同外設的訪問速度,又分別通過AHB總線訪問LCD、 Camera、Accelerator等高速外設,通過APB總線訪問iic、watchdog等低速外設。

3.2內存

Memory,又叫主內存,分為4大區域,分別是啟動鏡像區、內部內存區、靜態內存區、動態內存區。

啟動鏡像區物理地址為0x00000000~0x07ffffff,共128MB。這個區域的作用正如它的名字所述,是用來啟動系統的。但是這個范圍內並沒有實際的存儲 介質與之對應,只能在通過OM[4:0]選擇具體的啟動介質後再把相應介質的物理地址映射到這個啟動區,比如說選擇了IROM 啟動方式後,就把IROM所占的地址空間映射為0x00000000開始的空間。

內部內存區物理地址為0x08000000~0x0fffffff,共128MB。這個區域對應著內部的內存地址,內部的ROM和SRAM都是分布在這個區間。其中,0x08000000~0x0bffffff對應著內部ROM,當然實際上內部的ROM也並沒有64MB這麼多,只有32KB是有實際存儲介質的,這32KB是一個只讀區,放的是IROM方式下的啟動代碼,選擇IROM啟動的時候首先運行 的代碼就是這一部分,稱為BL0,這部分代碼由廠家固化。0x0c000000~0x0fffffff對應內部SRAM,實際可用的SRAM按照三星的手冊是4KB,其實這就是用於nand flash啟動的Steppingstone(但是這個Steppingstone是8KB,這2者似乎有矛盾,不知道是不是我的理解不對)。

靜態內存區物理地址為0x10000000~0x3fffffff,共6*128MB。這個區域用於訪問掛在外部總線上的設備,比如說SRAM、NOR flash、oneNand等。這個區域被分割為6個bank,每個bank為128MB,數據寬度最大支持16bit,每個bank通過 Xm0CS[5:0]來劃定。和S3C2410 不一樣的是,bank2~bank5能映射到nand flash、CF等非線性存儲器,這並不是說可以通過bank2~bank5的地址段就能直接訪問nand flash、CF內部的地址,相反,當映射到這些器件的時候這些bank的地址也不能再使用了,訪問這些非線性存儲器還是得通過Pheriperal空間的AHB總線進行,和S3C2410中的訪問方式是一樣的。不過有一個特例是,當Xm0CS2被映射到nand flash的時候,Steppingstone的4KB(or 8K?)SRAM被映射到bank2開始的4KB,而在以nand flash方式啟動的時候bank2被映射到0x00000000開始的地方,實際上就是把Steppingstone映射到0x0000000了,這和 S3C2410的情況還是相似的。

動態內存區物理地址為0x40000000~0x6fffffff,共3*256MB。其中第一個256MB為保留區,實際使用的動態內存區為 0x50000000~0x6fffffff,又分為2個區間,分別占256MB,可以通過DMC的Xm1CS[1:0]來進行著2個區間的選擇。這個內存區主要是擴展DRAM,最大可以擴展512MB的DRAM。

Copyright © Linux教程網 All Rights Reserved