新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > S3C2410外圍存儲系統(tǒng)的研究與設(shè)計

        S3C2410外圍存儲系統(tǒng)的研究與設(shè)計

        作者: 時間:2013-03-30 來源:網(wǎng)絡(luò) 收藏

          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)原理,完成了其的硬件電路設(shè)計和軟件初始化,最后成功實現(xiàn)了對S3C2410存儲系統(tǒng)的存取訪問。開發(fā)人員可以根據(jù)筆者的研究和設(shè)計思路,同時結(jié)合所需的存儲容量和類型進行高效的存儲系統(tǒng)設(shè)計。

        存儲器相關(guān)文章:存儲器原理



        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 义乌市| 廉江市| 开远市| 屏东市| 湘潭县| 仲巴县| 改则县| 美姑县| 商水县| 邹城市| 玉林市| 福清市| 黎城县| 平凉市| 连云港市| 孙吴县| 朝阳市| 东方市| 石楼县| 巴南区| 阳原县| 泸州市| 体育| 克山县| 泉州市| 额济纳旗| 上饶市| 都江堰市| 稻城县| 宜川县| 皮山县| 左云县| 松阳县| 孙吴县| 义乌市| 介休市| 贺兰县| 上林县| 乌拉特前旗| 甘孜| 田阳县|