新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于嵌入式系統的串口網絡服務器的設計

        基于嵌入式系統的串口網絡服務器的設計

        作者: 時間:2009-09-02 來源:網絡 收藏

        2.3 SDRAM接口電路
        SDRAM是高速的動態隨機存取存儲器,它的同步接口和完全流水線的內部結構使其擁有極大的數據速率。目前SDRAM時鐘頻率已達100MHz以上。另外他們的行、列地址線共用。由行地址選通(CAS)、列地址選通(RAS)信號分時控制。SDRAM內部以bank位組織,可由行、列地址尋址。另外為了保持內部數據還必須進行刷新。
        與Flash存儲器相比較,SDRAM不具有掉電保持數據的特性,但其存取速度大大高于Flash存儲器,且具有讀/寫的屬性。因此,SDRAM在中主要用作程序的運行空間、數據及堆棧區。當啟動時,CPU首先從復位地址0x0處讀取啟動代碼,在完成的初始化后,程序代碼一般應調入SDRAM中運行,以提供系統的運行速度。同時,系統及用戶堆棧、運行數據也都存放在SDRAM中。與Flash存儲器相比,SDRAM的控制信號較多,其連接電路也相對復雜。
        本系統采用兩片HY57V641620并聯構成32位的SDRAM存儲系統,其中一片為高16位,另一片為低16位。兩片HY57V641620的CLK端接的SDCLK端。兩片HY57V641620的CLE端接S3C4510B CLE端。兩片HY57V641620的A11~A0接S3C4510B ADDR11>~ADDR0>;高16位片的DQ15~DQ0接S3C4510B 的數據總線的高16位XDATA31>~XDATA16>;低16位片的DQ15~DQ0接S3C4510B的數據總線的低16位XDATA15>~XDATA0>。
        2.4 RTL8201接口電路
        RTL8201是Realtek公司生產的一種全雙工以太網控制器,由于其優良的性能、廉價的價格,使其在市場上10MbpsiISA總線網卡中占有相當的比例。按數據鏈路的不同,可以將RTL8201內部劃分為遠程DMA(remote,DMA)通道和本地DMA(local DMA)通道兩部分。本地DMA完成控制器與網線的數據交換,主處理器收發數據只需對遠程DMA操作。當主處理器要向網上發送數據時,先將一幀數據通過遠程DMA通道送到RTL8201中的發送緩存區,然后發出傳送數據命令。RTL8201在完成了上一幀的發送后,再完成此幀的發送。RTL8201接收到的數據通過MAC比較,CRC校驗后,由FIFO存到接收緩沖區,收滿一幀后,以中斷的方式通知主處理器。
        由于S3C4510B片內已有帶MII接口的MAC控制器,而RTL8201也提供了MII接口,各種信號的定義也很明確,因此RTL8201與S3C4510B的連接也比較簡單。直接將兩者的同名端連接即可。
        2.5 MAX232接口電路
        MAX232芯片時MAXIM公司生產的低功耗、單電源雙RS232發送/接收器。適用于各種EIA-232E和V.28/V.24的通信接口。MAX232芯片內部有一個電源電壓變換器,可以把輸入的+5V電源變換城RS-232C輸出電平所需10V電壓,所以采用此芯片接口的串行通信系統只要單一的+5V電源就可以。
        現選用其中一路發送/接受。T1I接S3C4510B的TXD0端,R1O接S3C4510B的RXD0端。因為MAX232具有驅動能力,所以不需要外加驅動電路。

        本文引用地址:http://www.104case.com/article/152360.htm

        3 軟件

        本系統采用uClinux作為操作系統。與一般全靠硬件實現的服務器比較起來,配置要復雜,需要用戶具有一定的技術背景,不過因為帶有操作系統,其靈活性也是硬件服務器所不能比擬的。用戶可以通過編寫應用程序,來隨意擴展所需的功能。
        Uclinux是一個完全符合GNU/GPL公約的操作系統,完全開發代碼,并且免費。Uclinux即“微控制領域中的Linux系統”,具有以下優點:
        (1) Linux是開放源代碼的,不存在黑箱技術,遍布全球的眾多Linux愛好者都是Linux開發者的強大技術支持者。
        (2) Linux源代碼隨處可見,注釋豐富,文檔齊全,易于解決各種問題。
        (3) Linux的內核小,效率高。
        (4) Linux內核的結構在網絡方面是非常完整的,它提供了對包括十兆位、百兆位及千兆位的以太網絡,還有無線網絡,以及光纖等的支持。
        (5) Linux在內核結構的中考慮適應系統的可裁減性的要求??蓪o用的代碼去除掉,近一步減少內核規模。
        3.1 程序的
        Linux對所有各類設備文件的輸入輸出擦作看上去就像對普通文件的輸入輸出一樣。所以Linux對串口的操作,也是通過設備文件訪問的。為了訪問串口,只需打開相應的設備文件即可。在Linux下,默認串行口COM1和COM2對應的設備分別為/dev/ttyS0 和/dev/ttyS1。
        (1) 打開串口是通過使用標準的文件打開函數操作:
        int fd;
        /*以讀寫方式打開串口*/
        fd = open( /dev/ttyS0, O_RDWR);
        if (-1 == fd){
        /* 不能打開串口一*/
        perror( 提示錯誤!);
        }
        (2) 設置串口
        最基本的設置串口包括波特率設置,效驗位和停止位設置。串口的設置主要是設置 struct termios 結構體的各成員值。
        struct termio
        { unsigned short c_iflag; /* 輸入模式標志 */
        unsigned short c_oflag; /* 輸出模式標志 */
        unsigned short c_cflag; /* 控制模式標志*/
        unsigned short c_lflag; /* local mode flags */
        unsigned char c_line; /* line discipline */
        unsigned char c_cc[NCC]; /* control characters */
        };
        (3) 發送數據
        char buffer[1024];int Length;int nByte;nByte = write(fd, buffer ,Length)
        (4) 讀取串口數據
        使用文件操作read函數讀取,如果設置為原始模式(Raw Mode)傳輸數據,那么read函數返回的字符數是實際串口收到的字符數??梢允褂貌僮魑募暮瘮祦韺崿F異步讀取,如fcntl,或者select等來操作。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 迭部县| 汉源县| 巴彦淖尔市| 宜阳县| 广宁县| 新余市| 伊金霍洛旗| 郎溪县| 葫芦岛市| 镇安县| 呼伦贝尔市| 谷城县| 江川县| 定兴县| 新巴尔虎右旗| 呈贡县| 江达县| 淮安市| 上栗县| 兰考县| 崇阳县| 海阳市| 扬州市| 海城市| 科尔| 垫江县| 信丰县| 庆安县| 永平县| 樟树市| 商都县| 镇康县| 宁化县| 靖州| 巫山县| 孟连| 泰州市| 获嘉县| 和政县| 唐山市| 丰县|