S3C2410外圍存儲(chǔ)系統(tǒng)的研究與設(shè)計(jì)
?。场∮布娐吩O(shè)計(jì)
在本嵌入式系統(tǒng)開(kāi)發(fā)實(shí)驗(yàn)中,S3C2410擴(kuò)展的存儲(chǔ)系統(tǒng)采用了英國(guó)Intel公司的16M?。牛玻福疲保玻福剩常粒保担啊。危希摇。疲欤幔螅栊酒?,以及Hynix公司的32M?。龋伲担罚郑担叮保叮玻埃隆。樱模遥粒托酒?。地址空間分配如下:Flash為Bank0中的0x00000000~0x07FFFFFF地址段,而SDRAM為Bank6中的0x30000000~0x37FFFFFF地址段,具體的電路連接如圖2。
圖?。病。樱常茫玻矗保啊∨cFlash、SDRAM的電路連接圖
?。础〈鎯?chǔ)系統(tǒng)初始化
?。眨拢铮铮羰堑聡?guó)DENX小組的開(kāi)發(fā)用于多種嵌入式CPU的開(kāi)放源代碼bootloader程序,目前最新版本是1.1.6,本實(shí)驗(yàn)使用的是U-Boot-1.1.4。U-Boot是在ppcboot以及armboot的基礎(chǔ)上發(fā)展而來(lái),現(xiàn)已非常成熟和穩(wěn)定,已經(jīng)在許多嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中被采用。其支持多種目標(biāo)操作系統(tǒng),其中對(duì)Linux的支持最完善,是嵌入式Linux?。拢铮铮簦欤铮幔洌澹虻淖罴堰x擇。
由于本實(shí)驗(yàn)Linux要移植的開(kāi)發(fā)板是基于s3c2410的開(kāi)發(fā)板,在U-Boot中已有移植成功的smdk2410開(kāi)發(fā)板,故以smdk2410開(kāi)發(fā)板上運(yùn)行的U-Boot為模板設(shè)計(jì)適合本實(shí)驗(yàn)的U-Boot。有關(guān)存儲(chǔ)系統(tǒng)的初始化修改如下:
?。ǎ保疲欤幔螅栩?qū)動(dòng)程序采用了board/Cmi/Flash.c,由于cmi中的flash.c在寫(xiě)入時(shí)要交換字節(jié),因而刪除了它的write_short()和write_buff()函數(shù),利用board/ep7312/Flash.c中的write_word()和write_buff()函數(shù),并且把flash.c中的FLASH_BASE0_PRELIM改為CFG_FLASH_BASE。把FLASH_BLOCK_SIZE改為0x20000,(E28F128J3A flash中塊的大小是128K)。
?。ǎ玻拢铮幔颍洌。螅恚洌耄玻矗保埃螅恚洌耄玻矗保埃阒泻瘮?shù)dram_init()定義了SDRAM的真實(shí)地址和實(shí)際大小。由于本實(shí)驗(yàn)中,SDRAM的大小為32M,所以修改Include/configs/Smdk2410.h中的PHYS_SDRAM_1_SIZE,改為0x02000000。
?。ǎ常⑷缦麓a替代原來(lái)在Include/configs/Smdk2410.h的/*FLASH?。幔睿洹。澹睿觯椋颍铮睿恚澹睿簟。铮颍纾幔睿椋幔簦椋铮睿粰谥械膬?nèi)容。
#define?。校龋伲樱撸疲蹋粒樱龋撸薄。埃埃埃埃埃埃埃埃啊 。。疲欤幔螅琛。拢幔睿搿。#薄。?P> ?。#洌澹妫椋睿濉。校龋伲樱撸疲蹋粒樱龋撸樱桑冢拧。埃埃保埃埃埃埃埃啊 。。保丁。停隆。?P> ?。#洌澹妫椋睿濉。茫疲牵撸疲蹋粒樱龋撸校遥希裕牛茫裕桑希?P> ?。#洌澹妫椋睿濉。茫疲牵撸疲蹋粒樱龋撸拢粒樱拧。校龋伲樱撸疲蹋粒樱龋撸?P> ?。#洌澹妫椋睿濉。茫疲牵撸停希危桑裕希遥撸拢粒樱拧。校龋伲樱撸疲蹋粒樱龋撸?P> ?。#洌澹妫椋睿濉。茫疲牵撸停粒兀撸疲蹋粒樱龋撸拢粒危耍印。薄 。。恚幔。睿酰恚猓澹颉。铮妗。恚澹恚铮颍。猓幔睿耄蟆。?P> ?。#洌澹妫椋睿濉。茫疲牵撸停粒兀撸疲蹋粒樱龋撸樱牛茫浴。保玻浮 。。恚幔。睿酰恚猓澹颉。铮妗。螅澹悖簦铮颍蟆。铮睢。铮睿濉。悖瑁椋稹。?P> ?。#洌澹妫椋睿濉。茫疲牵撸疲蹋粒樱龋撸牛遥粒樱牛撸裕希眨浴。ǎ玻茫疲牵撸龋冢 。。裕椋恚澹铮酰簟。妫铮颉。疲欤幔螅琛。牛颍幔螅濉。?P> #define?。茫疲牵撸疲蹋粒樱龋撸祝遥桑裕牛撸裕希眨浴。ǎ玻茫疲牵撸龋冢 。。裕椋恚澹铮酰簟。妫铮颉。疲欤幔螅琛。祝颍椋簦濉。?P> ?。#洌澹妫椋睿濉。茫疲牵撸牛危郑撸桑樱撸桑危撸疲蹋粒樱取。?P> ?。#洌澹妫椋睿濉。茫疲牵撸牛危郑撸粒模模摇。ǎ校龋伲樱撸疲蹋粒樱龋撸薄。。埃叮埃埃埃埃?P> ?。#洌澹妫椋睿濉。茫疲牵撸牛危郑撸樱桑冢拧。埃玻埃埃埃啊 。。裕铮簦幔臁。樱椋濉。铮妗。牛睿觯椋颍铮睿恚澹睿簟。樱澹悖簦铮颉。?P> 如上分析,SDRAM和Flash的初始化信息分別在smdk2410.c和flash.c文件中定義了,最后是通過(guò)lib_arm/board.c文件的display_dram_config()和display_flash_config()函數(shù)來(lái)顯示的。
?。怠〗Y(jié)束語(yǔ)
本文結(jié)合實(shí)際實(shí)驗(yàn),分析了S3C2410的存儲(chǔ)系統(tǒng)原理,完成了其外圍存儲(chǔ)系統(tǒng)的硬件電路設(shè)計(jì)和軟件初始化,最后成功實(shí)現(xiàn)了對(duì)S3C2410存儲(chǔ)系統(tǒng)的存取訪問(wèn)。開(kāi)發(fā)人員可以根據(jù)筆者的研究和設(shè)計(jì)思路,同時(shí)結(jié)合所需的存儲(chǔ)容量和類型進(jìn)行高效的存儲(chǔ)系統(tǒng)設(shè)計(jì)。
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論