1.1 尋址空間
ARM處理器爲32bit處理器,內部32bit地址總線理論尋址空間爲4GB,對於6410來說,尋址空間的高2GB在內部爲保留(reserved),低2GB(0x0~0x7FFFFFFF)可劃分爲2部分:主存儲區(main memory area)和外設區(peripheral area)。
1.2 主存儲空間(Main memory area)
6410內核與主存儲空間通過SPINE總線連接,主存儲爲地址空間0x0~0x6FFFFFFF,大小爲1792MB的一片區域;其中主存儲空間在6410內部劃分爲以下幾部分:
- Boot鏡像區(Boot image area)
- 內部存儲區(Internal ROM area and internal SRAM area)
- 靜態存儲區(Static memory area)
- 動態存儲區(Dynamic memory area)
- 保留區(Reserved memory area)
1.2.1 Boot鏡像區(Boot image 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。