嵌入式串口通信設(shè)計(jì)_第1頁(yè)
嵌入式串口通信設(shè)計(jì)_第2頁(yè)
嵌入式串口通信設(shè)計(jì)_第3頁(yè)
嵌入式串口通信設(shè)計(jì)_第4頁(yè)
嵌入式串口通信設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、湖南文理學(xué)院課程設(shè)計(jì)報(bào)告課程名稱: 嵌入式系統(tǒng)課程設(shè)計(jì) 專業(yè)班級(jí): 通信工程11101班 學(xué)號(hào)(2位)學(xué)生姓名: 石春波 指導(dǎo)教師: 王麗娟 完成時(shí)間: 2014年6月5日 報(bào)告成績(jī): 評(píng)閱意見: 評(píng)閱教師 日期 湖南文理學(xué)院制嵌入式Linux系統(tǒng)的串口通信研究摘 要 嵌入式是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可剪裁,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。隨著嵌入式系統(tǒng)的發(fā)展和大規(guī)模應(yīng)用,為了提升系統(tǒng)的整體性能,必須實(shí)現(xiàn)PC機(jī)和嵌入式計(jì)算機(jī)之間的通信。在實(shí)際開發(fā)應(yīng)用中,串口通信是不可缺少的部分。 目前嵌入式系統(tǒng)與PC機(jī)之間一種非常重要而且普遍應(yīng)用的通信方

2、式。本文通過基于2410F 的嵌入式串口通信的實(shí)現(xiàn),按照嵌入式系統(tǒng)的軟、硬件結(jié)構(gòu)組成,較為詳細(xì)地介紹了串口通信的硬件電路和軟件實(shí)現(xiàn)方法。通過與計(jì)算機(jī)串口間的接,實(shí)現(xiàn)在ARM 平臺(tái)上,傳輸速率115200bps,接收來自串口(通過超級(jí)終端)的字符并將接收到的字符發(fā)送到超級(jí)終端,實(shí)現(xiàn)監(jiān)測(cè)。與外部設(shè)備通信的基本功能。關(guān)鍵字:嵌入式系統(tǒng), 串口通信,Linux系統(tǒng) 0目 錄前 言- 3-一、串口通信概述- 4 -1.1 串口通信的原理- 4 -1.2 串口通信的開發(fā)工具- 4 - 1.2.1 2410F硬件平臺(tái)簡(jiǎn)介- 5 - 1.2.2 ARM簡(jiǎn)介- - 5 - 1.2.3 Linux系統(tǒng)簡(jiǎn)介- -

3、6 -1.3 串口通信的基本任務(wù)- 7 -二、系統(tǒng)分析- 8- 2.1 RS-232C標(biāo)準(zhǔn) - - 8 - 2.2 系統(tǒng)硬件結(jié)構(gòu)原理- - 15 -三、串口驅(qū)動(dòng)程序設(shè)計(jì)- 16 -3.1 串口操作需要的頭文件- 16 -3.2 打開串口- 16 -3.3 串口設(shè)置- 17 -3.4 串口讀寫- 19 -3.5 關(guān)閉串口- 21 -四、總結(jié)- 22 -參考文獻(xiàn)- 23 -附 錄- 24 -前 言 串口通信是指外設(shè)和計(jì)算機(jī)間,通過數(shù)據(jù)信號(hào)線 、地線、控制線等,按位進(jìn)行傳輸數(shù)據(jù)的一種通訊方式。這種通信方式使用的數(shù)據(jù)線少,在遠(yuǎn)距離通信中可以節(jié)約通信成本,但其傳輸速度比并行傳輸?shù)汀?嵌入式系統(tǒng)的硬件平臺(tái)

4、構(gòu)架、實(shí)時(shí)嵌入式操作系統(tǒng)的移植,為今后嵌入式系統(tǒng)的后繼開發(fā)提供了一個(gè)嵌入式平臺(tái)?;谇度胧较到y(tǒng)設(shè)計(jì)原理的嵌入式開發(fā)平臺(tái)的設(shè)計(jì)的總體方案,從硬件和軟件兩個(gè)方面講述了嵌入式系統(tǒng)的設(shè)計(jì)思想和方法,及其可行性的論證。嵌入式系統(tǒng)硬件平臺(tái)的設(shè)計(jì)與調(diào)試,著重?cái)⑹隽擞布脚_(tái)的整體設(shè)計(jì)方案,包括各個(gè)設(shè)計(jì)模塊的選型與接口電路的設(shè)計(jì)。隨著世界科技水平的發(fā)展,嵌入式系統(tǒng)以其小型、專用、易攜帶、可靠性高的特點(diǎn),已經(jīng)在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,如軍事國(guó)防、消費(fèi)電子、通信設(shè)備、工業(yè)控制等。隨著嵌入式系統(tǒng)軟硬件技術(shù)的飛速發(fā)展,其應(yīng)用領(lǐng)域必將更為廣闊,嵌入式系統(tǒng)的研究將會(huì)有非常廣泛的前景。本課題既可以使電子專業(yè)學(xué)生對(duì)ARM92

5、0T的嵌入式串口通信系統(tǒng)的實(shí)際應(yīng)用有深入的了解,更重要的是培養(yǎng)了我們的軟硬件動(dòng)手能力,是我們所學(xué)專業(yè)知識(shí)、理論、技能和培養(yǎng)學(xué)生獨(dú)立完成基本科研任務(wù)能力的一個(gè)綜合檢驗(yàn),具有一定的效果和意義。一、串口通信概述 所謂串口通信,是指外設(shè)和計(jì)算機(jī)間使用一根數(shù)據(jù)信號(hào)線(另外需要地線),數(shù)據(jù)在一根數(shù)據(jù)信號(hào)線上一位一位進(jìn)行傳輸,每一位數(shù)據(jù)都占據(jù)一個(gè)固定的時(shí)間長(zhǎng)度。 串口傳輸是二進(jìn)制代碼序列在一條信道上以位(元碼)為單位,按時(shí)間順序且按位傳輸?shù)耐ㄐ欧绞?。串行傳輸時(shí),發(fā)送端按位發(fā)送,接收端按位接受,同時(shí)還要對(duì)所傳輸?shù)奈患右源_認(rèn),所以收發(fā)雙方要采取同步措施,否則接受端將不能正確區(qū)分出所傳輸?shù)臄?shù)據(jù)。 串口通信不但能實(shí)

6、現(xiàn)計(jì)算機(jī)與嵌入式開發(fā)板之間的數(shù)據(jù)傳輸,而且還能實(shí)現(xiàn)計(jì)算機(jī)對(duì)嵌入式開發(fā)板的控制。若采用普通單片機(jī),對(duì)外部設(shè)備的訪問就需要利用復(fù)雜的匯編語(yǔ)言進(jìn)行編程或者使用C 51 自己編寫設(shè)備的初始化以及讀寫訪問程序,這樣的過程不僅復(fù)雜,而且不利于大規(guī)模的開發(fā)和設(shè)計(jì)。ARM 與8051 等普通單片機(jī)相比,具有開發(fā)簡(jiǎn)單、靈活,而且性能穩(wěn)定、功能易于擴(kuò)展等一系列優(yōu)勢(shì),因而在汽車電子、手持設(shè)備、無線領(lǐng)域和航空航天等嵌入式系統(tǒng)中得到廣泛的應(yīng)用。將Linux 移植到ARM 嵌入式處理器后,可以利用操作系統(tǒng)中提供的系統(tǒng)調(diào)用把串口及其他外設(shè)當(dāng)成普通文件進(jìn)行操作,讀寫方便,因此進(jìn)行相應(yīng)開發(fā)可以提高系統(tǒng)編程效率,而且還可以簡(jiǎn)化調(diào)

7、試的復(fù)雜程度。1.1 串口通信的原理串行端口的本質(zhì)功能是作為CPU和串行設(shè)備間的編碼轉(zhuǎn)換器。當(dāng)數(shù)從CPU經(jīng)過串行端口發(fā)送出去時(shí),字節(jié)數(shù)據(jù)轉(zhuǎn)換為串行的位。在接收數(shù)據(jù)時(shí),串行的位被轉(zhuǎn)換為字節(jié)數(shù)據(jù)。串口是系統(tǒng)資源的一部分,應(yīng)用程序要使用串口進(jìn)行通信,必須在使用之前向操作系統(tǒng)提出申請(qǐng)要求(打開串口),通信完成后必須釋放資源(關(guān)閉串口)。1.2 串口通信的開發(fā)工具 本次開發(fā)采用的硬件平臺(tái)是ARM920T處理器的2410F,開發(fā)系統(tǒng)平臺(tái)是Lin ux系統(tǒng)。1.2.1 2410F硬件平臺(tái)簡(jiǎn)介2410F 是基于三星ARM9 嵌入式處理器 S3C2410 處理器的一款開發(fā)平臺(tái),“F”指基于2410 的第六代開發(fā)

8、套件。系統(tǒng)運(yùn)行在 202M 的主2410F 是基于三星ARM9 嵌入式處理器 S3C2410 處理器頻下發(fā)揮出色的性能。可以完成MP3,MPG,VOIP 等工作。2410 資源豐富適合 ARM 處理器的初學(xué)者學(xué)習(xí)使用。2410F 上面使用的核心模塊體積小資源豐富,IO 充足還可以應(yīng)用在二次開發(fā)的產(chǎn)品當(dāng)中。這款設(shè)備主要包括核心板與底板兩個(gè)部分,核心板采用6 層PCB 設(shè)計(jì)、底板采用2 層PCB 板設(shè)計(jì),核心器件是基于目前業(yè)內(nèi)主流使用的SAMSUNG ARM9S3C2410 處理器,主頻202MHz,配套的存儲(chǔ)器,網(wǎng)卡等設(shè)備;底板主要是各類型的接口。S3C2410處理器是Samsung公司基于AR

9、M公司的ARM920T處理器核,采用0.18um制造工藝的32位微控制器。該處理器擁有:獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。S3C2410處理器最高可運(yùn)行在203MHz。它是基于ARM920T 內(nèi)核的16/32 位RISC 處理器, 主要應(yīng)用于嵌入式系統(tǒng)中。S3C2410 擁有強(qiáng)大的數(shù)據(jù)處理能力,

10、又有著低成本,低功耗等優(yōu)點(diǎn),在各種手持及移動(dòng)設(shè)備上的應(yīng)用越來越廣泛,基于其平臺(tái)的程序功能也越來越復(fù)雜。于是,在其平臺(tái)上架構(gòu)多線程的操作系統(tǒng)已成為越來越多系統(tǒng)設(shè)計(jì)者的訴求, 本文介紹多線程在S3C2410 上的具體實(shí)現(xiàn)過程。1.2.2 ARM簡(jiǎn)介ARM(Advanced RISC Machines),既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對(duì)一類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。1991 年ARM 公司成立于英國(guó)劍橋,主要出售芯片設(shè)計(jì)技術(shù)的授權(quán)。目前,采用ARM 技術(shù)知識(shí)產(chǎn)權(quán)(IP)核的微處理器,即通常所說的ARM微處理器,已遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無線系統(tǒng)、

11、軍用系統(tǒng)等各類產(chǎn)品市場(chǎng),基于ARM 技術(shù)的微處理器應(yīng)用約占據(jù)了32 位RISC 微處理器70以上的市場(chǎng)份額,ARM 技術(shù)正在逐步滲入到我們生活的各個(gè)方面。ARM 公司是專門從事基于RISC 技術(shù)芯片設(shè)計(jì)開發(fā)的公司,作為知識(shí)產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計(jì)許可,由合作公司生產(chǎn)各具特色的芯片,世界各大半導(dǎo)體生產(chǎn)商從ARM 公司購(gòu)買其ARM 微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐?,從而形成自己的ARM 微處理器芯片進(jìn)入市場(chǎng)。目前全世界有幾十家大的半導(dǎo)體公司都使用ARM 公司的授權(quán),因此既使得ARM 技術(shù)獲得更多的第三方工具、制造、軟件的支持,又使整個(gè)系統(tǒng)成本降低,使產(chǎn)品

12、更容易進(jìn)入市場(chǎng)并被消費(fèi)者所接受,更具有競(jìng)爭(zhēng)力。ARM 微處理器一般具有如下特點(diǎn):􀂗 (1)體積小、低功耗、低成本、高性能;􀂗 (2)支持 Thumb(16 位)/ARM(32 位)雙指令集,能很好的兼容8/16 位器件;􀂗 (3)大量使用寄存器,指令執(zhí)行速度更快;􀂗 (4)大多數(shù)數(shù)據(jù)操作都在寄存器中完成;􀂗 (5)尋址方式靈活簡(jiǎn)單,執(zhí)行效率高;􀂗 (6)指令長(zhǎng)度固定。1.2.3 Linux系統(tǒng)簡(jiǎn)介L(zhǎng)inux是一類Unix計(jì)算機(jī)操作系統(tǒng)的統(tǒng)稱。Linux操作系統(tǒng)也是自由軟件和開放源代碼發(fā)展

13、中最著名的例子。Linux 一般有四個(gè)主要部分:內(nèi)核、Shell、文件結(jié)構(gòu)和實(shí)用工具。(1)Linux 內(nèi)核內(nèi)核是系統(tǒng)的心臟,是運(yùn)行程序和管理像磁盤和打印機(jī)等硬件設(shè)備的核心程序。它從用戶那里接受命令并把命令送給內(nèi)核去執(zhí)行。(2)Linux ShellShell 是系統(tǒng)的用戶界面,提供了用戶與內(nèi)核進(jìn)行交互操作的一種接口。它接收用戶輸入的命令并把它送入內(nèi)核去執(zhí)行。實(shí)際上Shell 是一個(gè)命令解釋器,它解釋由用戶輸入的命令并且把它們送到內(nèi)核。不僅如此,Shell 有自己的編程語(yǔ)言用于對(duì)命令的編輯,它允許用戶編寫由shell 命令組成的程序。Shell 編程語(yǔ)言具有普通編程語(yǔ)言的很多特點(diǎn),比如它也有循

14、環(huán)結(jié)構(gòu)和分支控制結(jié)構(gòu)等,用這種編程語(yǔ)言編寫的Shell 程序與其他應(yīng)用程序具有同樣的效果。(3)Linux 文件結(jié)構(gòu)文件結(jié)構(gòu)是文件存放在磁盤等存儲(chǔ)設(shè)備上的組織方法。主要體現(xiàn)在對(duì)文件和目錄的組織上。目錄提供了管理文件的一個(gè)方便而有效的途徑。我們能夠從一個(gè)目錄切換到另一個(gè)目錄,而且可以設(shè)置目錄和文件的權(quán)限,設(shè)置文件的共享程度。使用Linux,用戶可以設(shè)置目錄和文件的權(quán)限,以便允許或拒絕其他人對(duì)其進(jìn)行訪問。(4)Linux 實(shí)用工具標(biāo)準(zhǔn)的 Linux 系統(tǒng)都有一套叫做實(shí)用工具的程序,它們是專門的程序,例如編輯器、執(zhí)行標(biāo)準(zhǔn)的計(jì)算操作等。用戶也可以產(chǎn)生自己的工具。實(shí)用工具可分三類:􀂗

15、編輯器:用于編輯文件。􀂗 過濾器:用于接收數(shù)據(jù)并過濾數(shù)據(jù)。􀂗 交互程序:允許用戶發(fā)送信息或接收來自其他用戶的信息。1.3 串口通信的基本任務(wù)(1)實(shí)現(xiàn)數(shù)據(jù)格式化:因?yàn)閬碜訡PU 的是普通的并行數(shù)據(jù),所以,接口電路應(yīng)具有實(shí)現(xiàn)不同串行通信方式下的數(shù)據(jù)格式化的任務(wù)。在異步通信方式下,接口自動(dòng)生成起止式的幀數(shù)據(jù)格式。在面向字符的同步方式下,接口要在待傳送的數(shù)據(jù)塊前加上同步字符。(2)進(jìn)行串-并轉(zhuǎn)換:串行傳送,數(shù)據(jù)是一位一位串行傳送的,而計(jì)算機(jī)處理數(shù)據(jù)是并行數(shù)據(jù)。所以當(dāng)數(shù)據(jù)由計(jì)算機(jī)送至數(shù)據(jù)發(fā)送器時(shí),首先把串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)才能送入計(jì)算機(jī)處理。因此串并轉(zhuǎn)換是串接口電路

16、和的重要任務(wù)。(3)控制數(shù)據(jù)傳輸速率:串行通信接口電路應(yīng)具有對(duì)數(shù)據(jù)傳輸速率-波特率進(jìn)行先擇和控制的能力。(4)進(jìn)行錯(cuò)誤檢測(cè):在發(fā)送接口電路對(duì)傳送的字符數(shù)據(jù)自動(dòng)生成奇偶校驗(yàn)位或其他校驗(yàn)碼。在接收時(shí),接口電路檢查字符的奇偶校驗(yàn)或其他檢驗(yàn)碼,確定是否發(fā)生傳送錯(cuò)誤。(5)進(jìn)行TTL 與EIA 電平轉(zhuǎn)換:CPU 和終端均采用TTL 電平及正邏輯,它們與EIA 采用的電平及負(fù)邏輯不兼容,需在接口電路中進(jìn)行轉(zhuǎn)換。二、系統(tǒng)分析 串行端口的本質(zhì)功能是作為CPU 和串行設(shè)備間的編碼轉(zhuǎn)換器,一般微機(jī)內(nèi)都配有通信適配器,使計(jì)算機(jī)能夠與其他具有RS-232C 串口的計(jì)算機(jī)或設(shè)備進(jìn)行通信。本系統(tǒng)主要目的是實(shí)現(xiàn)宿主機(jī)與目標(biāo)

17、機(jī)之間的近距離串行通信, 采用的宿主機(jī)是Intel Centrino架構(gòu)的Red Hat Linux 9.03 環(huán)境PC機(jī), 而目標(biāo)機(jī)是ARM 架構(gòu)的開發(fā)板。本系統(tǒng)中目標(biāo)機(jī)開發(fā)板的內(nèi)核采用的是三星的S3C2410 ,該開發(fā)板采用核心板加底板的模式, 核心板接口采用DIMM200 標(biāo)準(zhǔn)連接器,工作非常可靠,可穩(wěn)定運(yùn)行在203 MHz 的時(shí)鐘頻率下。其外設(shè)非常豐富,功能強(qiáng)大,完全可以滿足設(shè)計(jì)需要。串口線采用常用的RS-232C 型接口模式,能實(shí)現(xiàn)計(jì)算機(jī)與開發(fā)板間的數(shù)據(jù)傳輸與控制。嵌入式串口通信采用EIA RS-232C標(biāo)準(zhǔn)。2.1 RS-232C標(biāo)準(zhǔn)RS-232C是1969年由電子工業(yè)協(xié)會(huì)(EIA

18、)公布的標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)的用途是定義數(shù)據(jù)終端設(shè)備DTE(Data Terminal Equipment)與數(shù)據(jù)通信設(shè)備DCE(Data Communication Equioment)的接口特性。數(shù)據(jù)終端設(shè)備就是連接通信兩端設(shè)備的連線(如空MODEM)或其他設(shè)備。RS-232C標(biāo)準(zhǔn)的構(gòu)架如圖2.1所示。(數(shù)據(jù)終端設(shè)備DTE)(數(shù)據(jù)通信設(shè)備DCE)(數(shù)據(jù)通信設(shè)備DCE)(數(shù)據(jù)終端設(shè)備DTE)計(jì)算機(jī)BMODEMMODEM計(jì)算機(jī)ARS-232C通信線路RS-232C圖2.1 RS-232C標(biāo)準(zhǔn)的構(gòu)架(RS-232C標(biāo)準(zhǔn)的一些主要規(guī)范如下。(1) 電氣特性RS-232C采用非歸零、雙極性編碼,且使用負(fù)邏輯

19、規(guī)定的邏輯電平:-15-5V規(guī)定為邏輯“1”。+5+15V規(guī)定為邏輯“0”。信號(hào)電平與TTL電平不兼容,所以需要電平轉(zhuǎn)換電路(通常使用MAX3232轉(zhuǎn)換)。電平轉(zhuǎn)換電路如圖2.2所示。RS-232C輸出TTL輸出RS-232C接口電路MAX3232RS-232C輸入TTL輸入圖2.2 RS-232C的電平轉(zhuǎn)換電路(2) 引腳定義目前廣泛的DB9引腳定義如圖2.3所示。信號(hào)引腳定義的說明見表2.1。9 RIGND 58 CTSDTR 47 RTSTXD 3RXD 26 DSRDCD 1圖2.3 DB9 引腳定義表2.1 DB9引腳說明9針串口DB9針號(hào)功能說明縮寫1輸入,數(shù)據(jù)載波檢測(cè)DCD2輸入

20、,接收數(shù)據(jù)RXD3輸出,發(fā)送數(shù)據(jù)TXD4輸出,DTE準(zhǔn)備就緒DTR5信號(hào)地GND6輸入,MODEM準(zhǔn)備就緒DSR7輸出,請(qǐng)求發(fā)送RTS8輸入,允許發(fā)送CTS9輸入,振鈴指示DELL(3) 字符(幀)格式RS-232C采用起止式異步通信協(xié)議,其特點(diǎn)是一個(gè)字符接著一個(gè)字符進(jìn)行傳輸,并且傳輸一個(gè)字符總是以起始位開始,以停止位結(jié)束,字符之間沒有固定的時(shí)間間隔要求。其傳輸格式如圖2.4所示,每一個(gè)字符的前面都有一位起始位(低電平,邏輯“0”),字符本身有58位數(shù)據(jù)位,接著字符后面是一位校驗(yàn)碼(也可以沒有校驗(yàn)碼),最后是停止位。停止位后面是不定長(zhǎng)度的空閑位。停止位和空閑位都規(guī)定為高電平(邏輯值“1”),這

21、樣就能保證起始位開始處一定有一個(gè)下跳沿,便于接受方識(shí)別。校驗(yàn)位(可以沒有)起始位數(shù)據(jù)停止位接收方發(fā)送方1 x 1 1 1 1 1 0 1 1 0數(shù)據(jù)流方向1 1 1 1 1 1 0 1 1 01 1 11 0 1 0數(shù)據(jù)單元之間的間隔圖2.4 串行傳輸?shù)墓ぷ髟硎疽鈭D從圖2.4 中可以看出,這種格式是靠起始位和停止位來實(shí)現(xiàn)字符的界定或同步的,故稱為起止式協(xié)議。沒有統(tǒng)一的時(shí)鐘,沒有同步字符,依靠起始位和停止位標(biāo)識(shí)每一幀,傳輸時(shí),數(shù)據(jù)的地位在前,高位在后。起始位實(shí)際上是作為同步信號(hào)附加進(jìn)來的,當(dāng)它變?yōu)榈碗娖綍r(shí),告訴接受方傳輸開始,后面接著是數(shù)據(jù)位;而停止位則標(biāo)志一個(gè)字符的結(jié)束。這樣就為通信雙方提供

22、了何時(shí)開始收發(fā)、何時(shí)結(jié)束的標(biāo)志。傳輸開始前,收發(fā)雙方把所采用的字符格式(包括字符的數(shù)據(jù)位長(zhǎng)度、停止位位數(shù)、有無校驗(yàn)位以及是奇校驗(yàn)還是偶校驗(yàn)等)和數(shù)據(jù)的傳輸速率進(jìn)行統(tǒng)一規(guī)定。傳輸開始后,接收設(shè)備不斷地檢測(cè)線路,看是否有起始位到來。當(dāng)收到一系列的“1”(停止位或空閑位)之后,檢測(cè)到一個(gè)下跳沿(由“1”變?yōu)椤?”),說明起始位出現(xiàn),起始位經(jīng)確認(rèn)后,就開始接收所規(guī)定的數(shù)據(jù)位和奇偶校驗(yàn)位以及停止位。然后去掉停止位,對(duì)數(shù)據(jù)位進(jìn)行串并轉(zhuǎn)換,并且經(jīng)奇偶校驗(yàn)無誤后,才算正確地接收到一個(gè)字符。一個(gè)字符接收完畢,接收設(shè)備又繼續(xù)測(cè)試線路,監(jiān)視“0”電平的到來和下一位字符的開始,直到全部數(shù)據(jù)傳輸完畢。(4)握手協(xié)議RS

23、-232C標(biāo)準(zhǔn)除了規(guī)定的字符格式和通信波特率以外,還在數(shù)據(jù)終端設(shè)備DTE和數(shù)據(jù)通信設(shè)備DCE之間定義了一套握手協(xié)議。握手協(xié)議的過程如圖2.5所示。數(shù)據(jù)終端設(shè)備DTE 本地MODEM 遠(yuǎn)程MODEM 遠(yuǎn)程DTEDTRDSRRTS呼叫載波信號(hào)DCD 載波確認(rèn)CTSTXD圖2.5 DTE與DCE的握手協(xié)議過程DTR:數(shù)據(jù)終端設(shè)備DTE準(zhǔn)備就緒。DTE加電并能正確實(shí)現(xiàn)通信時(shí),向DCE發(fā)出DTR信號(hào)。DSR:數(shù)據(jù)通信設(shè)備DCE準(zhǔn)備就緒。MODEM加電并能正確執(zhí)行通信功能時(shí),DTE發(fā)出DSR信號(hào)。RTS:請(qǐng)求發(fā)送。當(dāng)DTE有數(shù)據(jù)需要向另一遠(yuǎn)程DTE傳輸時(shí),DTE在檢測(cè)DSR有效時(shí)向本地MODEM發(fā)出RTS

24、信號(hào)。本地MODEM檢測(cè)到RTS有效,然后根據(jù)目的電話號(hào)碼向遠(yuǎn)程MODEM發(fā)出呼叫。遠(yuǎn)程MODEM收到該呼叫,發(fā)出回答載波信號(hào)。本地MODEM接受到此載波信號(hào),然后向遠(yuǎn)程MODEM發(fā)出原載波信號(hào)進(jìn)行確認(rèn),同時(shí)向DTE發(fā)出數(shù)據(jù)載波信號(hào)DCD。DCD:數(shù)據(jù)載波信號(hào)檢測(cè)。由MODEM發(fā)向數(shù)據(jù)終端設(shè)備DTE,表示已檢測(cè)到對(duì)方載波信號(hào)。 CTS:允許發(fā)送,當(dāng)一個(gè)MODEM辨認(rèn)出對(duì)方MODEM已經(jīng)準(zhǔn)備接收時(shí),使用CTS信號(hào)通知自己的DTE,表示這個(gè)通信通路已經(jīng)做好數(shù)據(jù)傳輸?shù)臏?zhǔn)備,允許DTE進(jìn)行數(shù)據(jù)發(fā)送。至此,通信鏈路建立,可以通信。RI:振鈴指示。如果MODEM具有自動(dòng)應(yīng)答能力,當(dāng)對(duì)方呼叫傳來時(shí),MODE

25、M向DTE發(fā)出該信號(hào),指示此呼叫。在電話呼叫振鈴結(jié)束后,MODEM在DTE已準(zhǔn)備好的情況下(即DTR有效),立即向?qū)Ψ阶詣?dòng)應(yīng)答。(5) 雙機(jī)互連方式雙機(jī)可以利用RS-232C通信接口進(jìn)行直接互連(數(shù)據(jù)終端設(shè)備DTE到DTE),即空MODEM連接。這種形式在嵌入式系統(tǒng)中應(yīng)用極為廣泛。由于RS-232C標(biāo)準(zhǔn)中有兩對(duì)硬件握手協(xié)議的引線:DTR和DSR、RTS和CTS,根據(jù)應(yīng)用握手協(xié)議的機(jī)制不同,可分為3種情況:無硬件握手、DTR和DSR握手、RTS和CTS握手。 無硬件握手情況無硬件握手的雙機(jī)互連如圖2.6所示。DTE TXD RXD GND DTETXDRXDGND計(jì)算機(jī)B計(jì)算機(jī)A圖2.6 無握手

26、的雙機(jī)互連無硬件握手的連線最簡(jiǎn)單,只需要3根線,應(yīng)用比較多。但通信不可靠,接收緩沖區(qū)容易溢出。 DTR和DSR握手情況DTR和DSR握手的雙機(jī)互連如圖2.7所示。DTE TXD RXD GND DTRDSR DTETXDRXDGNDDTRDSR計(jì)算機(jī)B計(jì)算機(jī)A圖2.7 DTR和DSR握手的雙機(jī)互連采用DTR和DSR握手進(jìn)行發(fā)送和接收數(shù)據(jù)的過程如下(設(shè)計(jì)算機(jī)A接收,計(jì)算機(jī)B發(fā)送): 若計(jì)算機(jī)A已經(jīng)準(zhǔn)備就緒,則使DTR有效。計(jì)算機(jī)B通過采集DSR,得知計(jì)算機(jī)A已經(jīng)做好接收數(shù)據(jù)的準(zhǔn)備,可以發(fā)送數(shù)據(jù)。若計(jì)算機(jī)A為準(zhǔn)備好,則DTR無效,計(jì)算機(jī)B通過采集DSR,得知計(jì)算機(jī)A尚未做好接收數(shù)據(jù)的準(zhǔn)備,停止發(fā)送

27、數(shù)據(jù)。 RTS和CTS握手情況RTS和CTS握手的雙機(jī)互連如圖2.8所示。DTE TXD RXD GND RTS CTS DTETXDRXDGNDRTSCTS計(jì)算機(jī)A計(jì)算機(jī)B圖2.8 RTS和CTS握手的雙機(jī)互連利用RTS和CTS握手進(jìn)行發(fā)送和接收數(shù)據(jù)的過程如下(設(shè)計(jì)算機(jī)A接收、計(jì)算機(jī)B發(fā)送):若計(jì)算機(jī)A已經(jīng)準(zhǔn)備就緒,則使RTS有效。計(jì)算機(jī)B通過采集CTS,得知計(jì)算機(jī)A已經(jīng)做好接收數(shù)據(jù)的準(zhǔn)備,可以發(fā)送數(shù)據(jù)。若計(jì)算機(jī)A未準(zhǔn)備好,則RTS無效,計(jì)算機(jī)B通過采集CTS,得知計(jì)算機(jī)A尚未做好接收數(shù)據(jù)的準(zhǔn)備,停止發(fā)送數(shù)據(jù)。2.2 系統(tǒng)硬件結(jié)構(gòu)原理在串口通信的實(shí)現(xiàn)過程中,要保證數(shù)據(jù)傳輸?shù)目煽啃院头€(wěn)定性,

28、其硬件設(shè)計(jì)是必不可少的, 本文中選用S3C2410 芯片作為核心器件。S3C2410 芯片是SAMGSUNG公司16/ 32 位的RISC 處理器,采用ARM920 T 內(nèi)核,內(nèi)部具有2 個(gè)獨(dú)立的UART 控制器以及分開的16 kB的指令Cache 和16 kB 數(shù)據(jù)Cache ,每個(gè)控制器支持的最高波特率可達(dá)到230. 4 kb/ s 。S3C2410 芯片的這些特點(diǎn),為實(shí)現(xiàn)在Linux 操作系統(tǒng)下計(jì)算機(jī)與開發(fā)板間的串口通信提供了可靠的保證。基于S3C2410 的嵌入式串口通信的硬件結(jié)構(gòu)原理如圖2.9所示: 宿主機(jī)(計(jì)算機(jī)系統(tǒng)) 目標(biāo)機(jī)(開發(fā)板) JTAG接口模塊電源模塊計(jì)算機(jī)主機(jī)設(shè)備(帶R

29、S-232接口)顯示器液晶顯示模塊S3C2410 ARM芯片串行接口線DIMM200連接器接口模塊鍵盤控制模塊鍵盤外擴(kuò)存儲(chǔ)器模塊圖2.9 系統(tǒng)硬件結(jié)構(gòu)原理圖宿主機(jī)即計(jì)算機(jī)系統(tǒng)中,在Linux 操作系統(tǒng)下編寫好串口通信的程序,通過 網(wǎng)絡(luò)ftp下載至目標(biāo)機(jī)即開發(fā)板中,在相應(yīng)的軟件控制命令下,通過串行接口線即可實(shí)現(xiàn)宿主機(jī)與目標(biāo)機(jī)間數(shù)據(jù)的發(fā)送和接收。目標(biāo)機(jī)中電源模塊提供了開發(fā)板系統(tǒng)工作所需的正常電壓,各種數(shù)據(jù)信息可以通過液晶顯示模塊及時(shí)顯示出來,還可以通過鍵盤控制模塊來實(shí)現(xiàn)對(duì)目標(biāo)機(jī)操作的控制,外擴(kuò)存儲(chǔ)器模塊可以由FLASH 或SDRAM 構(gòu)成,當(dāng)然作為一個(gè)完整的系統(tǒng),還必須配有其他外圍電路,以保證系統(tǒng)

30、的正常工作。 三、串口驅(qū)動(dòng)程序設(shè)計(jì) 由于嵌入式系統(tǒng)是一個(gè)受資源限制的系統(tǒng),因此不能直接在嵌入式系統(tǒng)硬件上進(jìn)行編程。作為一個(gè)完整的嵌入式系統(tǒng),其軟件設(shè)計(jì)也是一個(gè)很重要的方面。本系統(tǒng)軟件的實(shí)現(xiàn)是通過串口設(shè)置和讀寫串口等操作來完成宿主機(jī)與目標(biāo)機(jī)間的串口通信。3.1 串口操作需要的頭文件在開發(fā)嵌入式Linux串口驅(qū)動(dòng)程序時(shí),需要以下頭文件。#include <stdio.h> /*標(biāo)準(zhǔn)輸入輸出定義*/#include <stdlib.h> /*標(biāo)準(zhǔn)函數(shù)庫(kù)定義*/#include <unisted.h> /*UNIX標(biāo)準(zhǔn)函數(shù)定義*/#include <sys/t

31、ypes.h>#include <sys/stat.h>#include <fcntl.h> /*文件控制定義*/#include <termios.h> /*POSIX終端控制定義*/#include <errno.h> /*錯(cuò)誤號(hào)定義*/3.2 打開串口在嵌入式Linux系統(tǒng)中,打開一個(gè)串口設(shè)備和打開普通文件一樣。嵌入式Linux系統(tǒng)下的串口文件通常位于/dev下:串口一為/dev/ttyS0;串口二為/dev/ttyS1。打開串口時(shí)通過使用標(biāo)準(zhǔn)的文件函數(shù)open( )來進(jìn)行操作的,下面假設(shè)以讀寫方式打開串口一。int fd;/文件描述

32、符fd=open(“/dev/ttyS0”,O_RDWR);/以讀寫方式打開串口if(fd=-1)/如果不能打開串口一 perror(“提示錯(cuò)誤!”); 3.3 串口設(shè)置在Linux 系統(tǒng)中,設(shè)備都是以文件的形式表示的,串口參數(shù)一般包括波特率、起始位數(shù)量、停止位數(shù)量等。下面對(duì)這些串口參數(shù)進(jìn)行詳細(xì)說明。(1) 起始位通信線路上沒有數(shù)據(jù)被傳送時(shí),處于邏輯“1”狀態(tài)。當(dāng)發(fā)送字符數(shù)數(shù)據(jù)是首先發(fā)送一個(gè)邏輯“0”信號(hào),這個(gè)邏輯低電平就是起始位。起始位通過通信線路傳輸?shù)浇邮斩?,接收端檢測(cè)到這個(gè)低電平之后,就開始準(zhǔn)備接收數(shù)據(jù)位信號(hào)。起始位所起的作用就是使通信雙方同步。(2) 數(shù)據(jù)位當(dāng)接收端收到起始位后,開始接

33、收數(shù)據(jù)位。數(shù)據(jù)位的個(gè)數(shù)可以是58位。在數(shù)據(jù)傳送過程中,數(shù)據(jù)位從最低有效位開始傳送,接收端收到數(shù)據(jù)后,依次將其轉(zhuǎn)換成并行數(shù)據(jù)。(3) 奇偶校驗(yàn)位數(shù)據(jù)位發(fā)送完后,為了保證數(shù)據(jù)的可靠性,還要傳送一個(gè)奇偶校驗(yàn)位。奇偶校驗(yàn)用于差錯(cuò)檢測(cè)。如果選擇偶檢驗(yàn),則數(shù)據(jù)位和奇偶位的邏輯“1”的個(gè)數(shù)必須為偶數(shù),相反,如果是奇檢驗(yàn),則數(shù)據(jù)位和奇偶位的邏輯“1”的個(gè)數(shù)為奇數(shù)。(4) 停止位在奇偶位或數(shù)據(jù)位(當(dāng)無奇偶校驗(yàn)時(shí))之后發(fā)送停止位。停止位表示一個(gè)數(shù)據(jù)的結(jié)束。它可以是12位的低電平。接收端收到停止位后,通信線路便恢復(fù)邏輯“1”的狀態(tài),直到下一個(gè)數(shù)據(jù)的起始位到來。(5) 波特率通信線路上傳輸?shù)奈唬ùa元)信號(hào)都必須保持一

34、致的信號(hào)持續(xù)時(shí)間,單位時(shí)間內(nèi)傳送碼元的數(shù)目稱為波特率。對(duì)大多數(shù)嵌入式設(shè)備來說,其波特率都設(shè)置為115200。訪問串行口通過對(duì)設(shè)備文件的訪問來實(shí)現(xiàn),僅需打開相應(yīng)的設(shè)備文件。串口的設(shè)置主要是設(shè)置struct termios 結(jié)構(gòu)體中的各成員值。#include<termios.h>struct termiounsigned short c_iflag; /*輸入模式標(biāo)志*/unsigned short c_oflag; /*輸出模式標(biāo)志*/unsigned short c_cflag; /*控制模式標(biāo)志*/unsigned short c_lflag; /*本地模式標(biāo)志*/unsign

35、ed char c_line; /*線路規(guī)范*/unsigned char c_ccNCC; /*控制特征值*/波特率設(shè)置:struct termios option;tcgetattr(fd,&option);cfsetispeed(&option,B115200);/*設(shè)置為115200Bps*/cfsetospeed(&option,B115200);tcsetattr(fd,TCANOW,&option);檢驗(yàn)位設(shè)置:無校驗(yàn) 8 位:options.c_cflag &=PARENBoptions.c_cflag &=CSTOPB;opti

36、ons.c_cflag &=CSIZE;options.c_cflag=CS8;奇效驗(yàn)(Odd)7 位:options.c_cflag=PARENB;options.c_cflag &=PARODD;options.c_cflag &=CSTOPB;options.c_cflag &=CSIZE;options.c_cflag=CS7;偶校驗(yàn)(Even)7 位:options.c_cflag &=PARENB;options.c_cflag=OARODD;options.c_cflag &= CSTOPB;options.c_cflag &

37、;=CSIZE;options.c_cflag=CS7;Space 校驗(yàn)7 位:options.c_cflag &= PARENB;options.c_cflag &=CSTOPB;options.c_cflag &=&CSIZE;options.c_cflag=CS8;停止位設(shè)置:1位: options.c_cflag &=CSTOPB;2位: options.c_cflag=CSTOPB;模式設(shè)置:需要注意的是,如果不是開發(fā)終端之類的,只是串口傳輸數(shù)據(jù),而不需要串口來處理,那么使用原始模式(Raw Mode)方式來通訊。options.c_lflag

38、 &=(ICANONECHOECHOEISIG);/*Input*/options.c_oflag &=OPOST;/*Output*/3.4 串口讀寫在Linux 系統(tǒng)中,對(duì)設(shè)備和目錄的操作都等同于文件的操作,這樣大大簡(jiǎn)化了系統(tǒng)對(duì)不同設(shè)備的處理,提高了效率。在程序中,設(shè)備和文件都是使用文件描述符來進(jìn)行操作的。文件描述符是一個(gè)非負(fù)的整數(shù),是一個(gè)索引值,并指向內(nèi)核中每個(gè)進(jìn)程打開文件的記錄表。當(dāng)打開一個(gè)現(xiàn)存的文件或者是創(chuàng)建一個(gè)新文件時(shí),內(nèi)核就向進(jìn)程返回一個(gè)文件描述符;當(dāng)需要讀寫時(shí)也需要將文件描述符作為參數(shù)傳遞給相應(yīng)的函數(shù)。在Linux 系統(tǒng)中,所有的設(shè)備文件都位于“/ dev”下,

39、其中串口對(duì)應(yīng)的設(shè)備名為“/ dev/ ttyS0”,因此對(duì)串口的讀寫就可以像讀寫(“read”和“write”) 普通文件一樣來讀寫設(shè)備文件,所不同的是需要對(duì)串口的其他參數(shù)另做配置。打開串口之后,讀寫串口就很容易了,把串口當(dāng)作文件讀寫就可以了。(1)發(fā)送數(shù)據(jù)char butter1024;int Length=1024;int nByte;nByte=write(fd,buffer,Length);(2)讀取串口數(shù)據(jù)使用文件操作read 函數(shù)讀取,如果設(shè)置為原始模式(Raw Mode)傳輸數(shù)據(jù),那么read 函數(shù)返回的字符數(shù)是實(shí)際串口收到的字符數(shù)。讀取數(shù)據(jù)時(shí)比較需要技巧的。char buff1

40、024;int Len=1024;int rdadByte=read(fd,buff,Len);也可以使用操作文件的函數(shù)來實(shí)現(xiàn)異步讀取,如fcntl,或者selectt 等來操作。fd_set rfds;struct timeval tv;int retval;/*下面幾行設(shè)置要監(jiān)視進(jìn)行讀寫操作的文件集*/FD-ZERO(&rfds); /文件集清零FD_SET(portsportNo.handle,&rfds); /向集合中添加一個(gè)文件句柄tv.tv_sec=Timeout/1000; /設(shè)置等待的時(shí)間tv.tv_usec=(Timeeout%1000)*1000;retva

41、l=select(16,&rfds,NULL,NULL,&tv;) /文件所監(jiān)視的文件集準(zhǔn)備好.if(rdtvel) /文件集中有文件在等待時(shí)間內(nèi)準(zhǔn)備好了.actuaIRead=read(portsportNo.handle,buf,maxCnt); /讀取數(shù)據(jù)下面兩個(gè)實(shí)例給出了串口讀和寫兩個(gè)程序部分代碼。寫串口的程序?qū)⒃谒拗鳈C(jī)上運(yùn)行,讀串口程序?qū)⒃谀繕?biāo)板上運(yùn)行。寫串口部分程序:doprintf(“Input some words(enter quit to exit):”);memset(buff, 0,BUFFER_SIZE);if(fgets(buff,BUFFER_SI

42、ZE,stdin)=NULL)perror(“fgets”);break;write(fd,buff,strlen(buff);whie(strncmp(buff,”quit”,4);讀串口部分程序:domemset(buff,0,BUFFER_SIZE);if(read(fd,buff,BUFFER_SIZE)>0)printf(“The received words are:%s”,buff);while(strncmp(buff,”quit”,4);close(fd);3.5 關(guān)閉串口在Linux 系統(tǒng)中,對(duì)設(shè)備和目錄的操作都等同于文件的操作, 關(guān)閉串口就是關(guān)閉文件,而設(shè)備和文件都

43、是使用文件描述符來進(jìn)行操作的。文件描述符是一個(gè)索引值,指向內(nèi)核中每個(gè)進(jìn)程打開文件的記錄表,因此關(guān)閉文件就只要關(guān)閉文件描述符就可以了。4、 總結(jié) 本文介紹了一種基于嵌入式的串口通信系統(tǒng),采用S3C2410 芯片作為串口 通信的控制核心器件,實(shí)現(xiàn)了在Linux 操作系統(tǒng)下宿主機(jī)與目標(biāo)機(jī)間串口通信 的基本功能?;谇度胧较到y(tǒng)設(shè)計(jì)原理的嵌入式開發(fā)平臺(tái)的設(shè)計(jì)的總體方案,從硬件和軟件兩個(gè)方面講述了嵌入式系統(tǒng)的設(shè)計(jì)思想和方法,及其可行性的論證。嵌入式系統(tǒng)硬件平臺(tái)的設(shè)計(jì)與調(diào)試,著重?cái)⑹隽擞布脚_(tái)的整體設(shè)計(jì)方案,包括各個(gè)設(shè)計(jì)模塊的選型與接口電路的設(shè)計(jì)。隨著世界科技水平的發(fā)展,嵌入式系統(tǒng)以其小型、專用、易攜帶、可

44、靠性高的特點(diǎn),已經(jīng)在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,如軍事國(guó)防、消費(fèi)電子、通信設(shè)備、工業(yè)控制等。隨著嵌入式系統(tǒng)軟硬件技術(shù)的飛速發(fā)展,其應(yīng)用領(lǐng)域必將更為廣闊,嵌入式系統(tǒng)的研究將會(huì)有非常廣泛的前景。通過這兩個(gè)周的學(xué)習(xí),還是學(xué)到了不少的知識(shí)!不僅糾正了課程學(xué)習(xí)過程中出現(xiàn)的許多錯(cuò)誤,還在試驗(yàn)中驗(yàn)證了自己的一些猜想。在學(xué)習(xí)的過程中有失敗,當(dāng)然也有困惑,有成功,當(dāng)然就有喜悅。雖然只是課程設(shè)計(jì),我還是認(rèn)真對(duì)待,能認(rèn)識(shí)到自己的過錯(cuò)和不足不也是一件幸事嗎!做學(xué)問也是做人,再作學(xué)問的過程中體味做人的道理不也是一種收獲嗎?記得古語(yǔ)中說:“學(xué),然后知不足”!爭(zhēng)取在以后的學(xué)習(xí)中改正自己。參考文獻(xiàn)1張思民編著.嵌入式系統(tǒng)設(shè)計(jì)與

45、應(yīng)用M. 北京:清華大學(xué)出版社, 2008.2ARM Limited. ARM Developer Suiter (Version 1.2) , Assemble Guide, ARM DUI 0068A, 2000.3熊茂華、楊震倫主編. ARM9嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)應(yīng)用M.北京:清華大學(xué)出版社,2008.4劉彥文主編.基于ARM TDMI的S3C44BOX嵌入式微處理器技術(shù)M.北京:清華大學(xué)出版社,2009.5徐磊編著.Linux系統(tǒng)下C程序開發(fā)詳解M. 北京:電子工業(yè)出版社,2008.6華清遠(yuǎn)見嵌入式培訓(xùn)中心編著. 嵌入式Linux系統(tǒng)開發(fā)標(biāo)準(zhǔn)教程(第2版)M. 北京:人民郵電出版社,2

46、009.7羅苑棠編著.嵌入式Linux驅(qū)動(dòng)程序和系統(tǒng)開發(fā)實(shí)例精講M.北京:電子工業(yè)出版社,2009.8羅蕾主編. 嵌入式實(shí)時(shí)操作系統(tǒng)及應(yīng)用開發(fā)(第2版)M. 北京:北京航空航天大學(xué)出版社,2007.9華清遠(yuǎn)見嵌入式培訓(xùn)中心編著. Linux設(shè)備開發(fā)詳解(第2版)M. 北京:人民郵電出版社,2010.10 Advanced Programming in the UNIX EnvironmentMW.Richard Stevens,2000. 附 錄串口通信程序serial_com.c源代碼:/*serial_com.c*/#include <string.h>#include <

47、;unistd.h>#include <fcntl.h>#include <errno.h>#include <termios.h>#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>#define MODEMDEVICE "/dev/ttyS0"#define _POSIX_SOURCE 1#define FALSE 0#define TRUE 1volatile int STOP=FALSE;main() int fd,n=0,c,BAUDRATE,i,BUFNUMBER=32,READNUMBER=32; char receivebufBUFNUMBER; struct termios oldtio,newtio; struct stat st; errno=0; fd=open(MO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論