S3C2410外圍存儲系統(tǒng)的研究與設(shè)計
3 硬件電路設(shè)計
在本嵌入式系統(tǒng)開發(fā)實驗中,S3C2410擴展的存儲系統(tǒng)采用了英國Intel公司的16M E28F128J3A-150 NOR Flash芯片,以及Hynix公司的32M HY57V561620B SDRAM芯片。地址空間分配如下:Flash為Bank0中的0x00000000~0x07FFFFFF地址段,而SDRAM為Bank6中的0x30000000~0x37FFFFFF地址段,具體的電路連接如圖2。
圖 2 S3C2410 與Flash、SDRAM的電路連接圖
4 存儲系統(tǒng)初始化
U-Boot是德國DENX小組的開發(fā)用于多種嵌入式CPU的開放源代碼bootloader程序,目前最新版本是1.1.6,本實驗使用的是U-Boot-1.1.4。U-Boot是在ppcboot以及armboot的基礎(chǔ)上發(fā)展而來,現(xiàn)已非常成熟和穩(wěn)定,已經(jīng)在許多嵌入式系統(tǒng)開發(fā)過程中被采用。其支持多種目標操作系統(tǒng),其中對Linux的支持最完善,是嵌入式Linux Bootloader的最佳選擇。
由于本實驗Linux要移植的開發(fā)板是基于s3c2410的開發(fā)板,在U-Boot中已有移植成功的smdk2410開發(fā)板,故以smdk2410開發(fā)板上運行的U-Boot為模板設(shè)計適合本實驗的U-Boot。有關(guān)存儲系統(tǒng)的初始化修改如下:
(1)Flash驅(qū)動程序采用了board/Cmi/Flash.c,由于cmi中的flash.c在寫入時要交換字節(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)。
(2)Board/ smdk2410/smdk2410.c中函數(shù)dram_init()定義了SDRAM的真實地址和實際大小。由于本實驗中,SDRAM的大小為32M,所以修改Include/configs/Smdk2410.h中的PHYS_SDRAM_1_SIZE,改為0x02000000。
(3)將如下代碼替代原來在Include/configs/Smdk2410.h的/*FLASH and environment organization*/一欄中的內(nèi)容。
#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
#define PHYS_FLASH_SIZE 0x01000000 /* 16 MB */
#define CFG_FLASH_PROTECTION
#define CFG_FLASH_BASE PHYS_FLASH_1
#define CFG_MONITOR_BASE PHYS_FLASH_1
#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
#define CFG_MAX_FLASH_SECT 128 /* max number of sectors on one chip */
#define CFG_FLASH_ERASE_TOUT (2*CFG_HZ) /* Timeout for Flash Erase */
#define CFG_FLASH_WRITE_TOUT (2*CFG_HZ) /* Timeout for Flash Write */
#define CFG_ENV_IS_IN_FLASH 1
#define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x60000)
#define CFG_ENV_SIZE 0x20000 /* Total Size of Environment Sector */
如上分析,SDRAM和Flash的初始化信息分別在smdk2410.c和flash.c文件中定義了,最后是通過lib_arm/board.c文件的display_dram_config()和display_flash_config()函數(shù)來顯示的。
5 結(jié)束語
本文結(jié)合實際實驗,分析了S3C2410的存儲系統(tǒng)原理,完成了其外圍存儲系統(tǒng)的硬件電路設(shè)計和軟件初始化,最后成功實現(xiàn)了對S3C2410存儲系統(tǒng)的存取訪問。開發(fā)人員可以根據(jù)筆者的研究和設(shè)計思路,同時結(jié)合所需的存儲容量和類型進行高效的存儲系統(tǒng)設(shè)計。
存儲器相關(guān)文章:存儲器原理
評論