arm處理器為32bit處理器,內部32bit位址匯流排理論定址空間為4gb,對於6410來說,定址空間的高2gb在內部為保留(reserved),低2gb(0x0~0x7fffffff)可劃分為2部分:主儲存區(main memory area)和外設區(peripheral area)。
boot映象區位於6410定址空間的0x0~0x07ffffff(128mb)位置,這段區域並沒有真正的儲存裝置,實際執行過程中是對映到內部儲存區或靜態儲存區,boot映象區固定起始位址為0x00000000。
boot 映象區沒有實際的儲存裝置,只是在一些特定區域的「映象」,之所以有這種位於0x0位址映象,主要是因為arm核心啟動之後強制pc從0x0位址開始取指有關。至於與哪些特定區域映象,與系統配置密切相關(關於系統啟動配置詳見後續章節說明),當系統為:
1) srom (8 bit/16 bit)啟動(booting)
當系統為srom booting 配置,boot映象區為srom控制器的第0個bank(128mb),即0x10000000~0x17ffffff位址,支援的儲存器可以是sram、rom、nor flash等,對應位址片選引腳xm0csn[0]。
2) modem(8 bit/16 bit)啟動(booting)
當系統為modem booting配置,boot映象區僅位址為0x00000000~0x00007fff的32kb區域有效,且對應為6410內部的i_rom區低32kb位元組0x08000000~0x08007fff。
3) onenand 啟動(booting)
當系統為onenand 模式啟動配置,整個boot映象區0x0~0x07ffffff全部為靜態儲存器0x20000000~0x27ffffff位址映象,128mb一一對應。
6410支援2 bank個onenand 位址對映區,分別為onenand0 和onenand1,只有onenand0對應的位址才可能在啟動時候映象到boot映象區。
4) irom啟動(booting)
irom啟動設定之後,boot映象區僅位址為0x00000000~0x00007fff的32kb區域有效,且對應為6410內部的i_rom區低32kb位元組0x08000000~0x08007fff。
順便提及一下,i_rom主要實現的功能是在系統啟動之後,執行一些核心、外設初始化,搬移啟動**到stepping stone區域,然後跳轉到該區域執行後續的booting。
1.2.2
內部儲存區(internal rom area and internalsram area)
6410的內部儲存區分為位址0x08000000~0x0bffffff的64mb i_rom和位址0x0c000000~0x0fffffff的64mb i_sram的兩塊區域。64mb空間的i_rom區域實際只有低32kb有效0x08000000~0x0bffffff;64mb空間的i_sram區域也不連續分布在0x0c000000~0x0c005fff區域。
1.2.3
靜態儲存區(static memory area)
6410內部的靜態儲存區位址分布在0x10000000~0x3fffffff,一共6*128mb大小,分為bank0~bank5,對應位址片選引腳xm0csn[0]~ xm0csn[5]。
靜態儲存區對應的晶元外部介面memoryport0通過外部匯流排介面(ebi),分別為
srom控制器、onenand控制器、nand flash控制器以及cf控制器分享。如下圖,memory port0分為片選共享和外部匯流排介面共享兩部分。
靜態儲存區結構:
摘自《s3c6410 user』s manual rev 1.2》
ebi共享訊號如下表:
摘自《s3c6410 user』s manual rev 1.2》
片選訊號共享與系統啟動模式(包括xselnand)和儲存區控制暫存器mem_ctl_cfg的bit5~bit0控制域(mp0_cs_cfg)共同決定。
當系統選擇為nandflash啟動配置(xselnand=1,om[4:0]=111x),系統會忽略mp0_cs_cfg的設定,自動使xm0csn[2]、xm0csn[3]對應nand flash cs0、nand flash cs1。
當系統選擇為onenandflash啟動配置,系統會忽略mp0_cs_cfg的設定,自動使xm0csn[2]、xm0csn[3]對應onenand flash cs0、onenand flash cs1。
當系統選擇為srom啟動配置,無需配置mp0_cs_cfg,系統自動使xm0csn[0]、xm0csn[1]對應sromc cs0、sromc cs1。
當系統選擇為sd啟動配置,需要配置mp0_cs_cfg的bit4=1,或bit5=1,使xm0csn[4]、xm0csn[5]對應到cfcon cs0、cfcon cs1。
mp0_cs_cfg設定:
摘自《s3c6410 user』s manual rev 1.2》
1.2.4
動態儲存區(dynamic memory area) 6410動態儲存區位址段0x50000000~0x6fffffff,分為2個bank,每個bank 256mb。
s3c6410位址對映
arm處理器為32bit處理器,內部32bit位址匯流排理論定址空間為4gb,對於6410來說,定址空間的高2gb在內部為保留 reserved 低2gb 0x0 0x7fffffff 可劃分為2部分 主儲存區 main memory area 和外設區 peripheral area 6410核心...
s3c6410儲存器對映
1.引導映象區 0x0000 0000 0x07ff ffff 2.內部儲存區 1 內部rom 0x0800 0000 0x0bff ffff 2 內部sram 0x0c00 0000 0x0fff ffff 3.靜態儲存區 0x1000 0000 0x3fff ffff 4.動態儲存區 0x400...
S3C6410 儲存器對映
1 儲存系統塊圖 我們以行為單位來看,在每一行中,最前面的兩列表示的是位址範圍,後面的幾列則是不同的儲存控制器。在每一行中用粗邊框標示出來的部分表示最前面兩列的位址範圍對映到這個區域當中。例如 最後兩行的位址範圍 0x50000000 0x5fffffff和0x60000000 0x6fffffff...