欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      嵌入式Linux網(wǎng)絡(luò)通信實驗(最終5篇)

      時間:2019-05-14 23:02:46下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《嵌入式Linux網(wǎng)絡(luò)通信實驗》,但愿對你工作學(xué)習有幫助,當然你在寫寫幫文庫還可以找到更多《嵌入式Linux網(wǎng)絡(luò)通信實驗》。

      第一篇:嵌入式Linux網(wǎng)絡(luò)通信實驗

      淮陰工學(xué)院

      Linux操作系統(tǒng)及嵌入式應(yīng)用

      實驗報告

      系(院): 計算機工程學(xué)院 專

      業(yè):計算機科學(xué)與技術(shù)(物聯(lián)網(wǎng)工程)班

      級: 物聯(lián)網(wǎng)1111

      名: 蔣振 學(xué)

      號:1111307116 指導(dǎo)教師:

      孫成富

      學(xué)年學(xué)期:

      2014 ~ 2015 學(xué)年 第 學(xué)期

      實驗1 Socket全雙工通信實驗 實驗?zāi)康?/p>

      1)了解網(wǎng)絡(luò)套接字編程

      2)掌握網(wǎng)絡(luò)通信服務(wù)器和客戶端的工作過程 3)利用多線程實現(xiàn)全雙工通信 4)下載并運行網(wǎng)絡(luò)應(yīng)用程序

      2實驗環(huán)境

      1)宿主機:Fedora 10 2)嵌入式Linux軟硬件系統(tǒng):TQ2440(基于S3C2440A)開發(fā)板

      3實驗準備

      3.1Linux下的多線程編程

      進程是程序執(zhí)行時的一個實例,即它是程序已經(jīng)執(zhí)行到何種程度的數(shù)據(jù)結(jié)構(gòu)的匯集。從內(nèi)核的觀點看,進程的目的就是擔當分配系統(tǒng)資源(CPU時間、內(nèi)存等)的基本單位。

      線程是進程的一個執(zhí)行流,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。一個進程由幾個線程組成(擁有很多相對獨立的執(zhí)行流的用戶程序共享應(yīng)用程序的大部分數(shù)據(jù)結(jié)構(gòu)),線程與同屬一個進程的其他的線程共享進程所擁有的全部資源。

      本實驗使用多線程解決了并行通信的難題。關(guān)于多線程的函數(shù)主要是使用pthread.h頭文件中定義的多線程操作函數(shù),如pthread_create、pthread_cancel等。

      3.2TCP/IP概述

      3.2.1TCP/IP的分層模型

      OSI協(xié)議參考模型,是基于國際標準化組織(ISO)的建議發(fā)展起來的,它分為7個層次:應(yīng)用層、表示層、會話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層及物理層。這個7層的協(xié)議模型雖然規(guī)定得非常細致和完善,但在實際中卻得不到廣泛 的應(yīng)用,其重要的原因之一就在于它過于復(fù)雜。但它仍是此后很多協(xié)議模型的基礎(chǔ)。與此相區(qū)別的TCP/IP協(xié)議模型將OSI的7層協(xié)議模型簡化為4層,從而更有利于實現(xiàn)和使用。

      TCP/IP的協(xié)議參考模型和OSI協(xié)議參考模型的對應(yīng)關(guān)系如下圖 1所示:

      SYN J SYN K,ACK J+1 ACK K+1 圖1 TCP/IP協(xié)議與OSI協(xié)議參考模型對比圖

      3.2.2TCP的三次握手

      TCP是面向連接的,所謂面向連接,就是當計算機雙方通信時必需先建立連接,然后進行數(shù)據(jù)通信,最后拆除連接三個過程。TCP在建立連接時又分三步走:

      第一步(A->B):主機A向主機B發(fā)送一個包含SYN即同步(Synchronize)標志的TCP報文,SYN同步報文會指明客戶端使用的端口以及TCP連接的初始序號;

      第二步(B->A):主機B在收到客戶端的SYN報文后,將返回一個SYN+ACK的報文,表示主機B的請求被接受,同時TCP序號被加一,ACK即確認(Acknowledgment)。

      第三步(A->B):主機A也返回一個確認報文ACK給服務(wù)器端,同樣TCP序列號被加一,到此一個TCP連接完成。

      3.3套接字(socket)概述

      3.3.1套接字類型

      1)流式套接字(SOCK_STREAM)

      流式套接字提供可靠的、面向連接的通信流;它使用TCP協(xié)議,從而保證了數(shù)據(jù)傳輸?shù)目煽啃院晚樞蛐浴?)數(shù)據(jù)報套接字(SOCK_DGRAM)

      數(shù)據(jù)報套接字定義了一種無可靠、面向無連接的服務(wù),數(shù)據(jù)通過相互獨立的報文進行傳輸,是無序的,并且不保證是可靠、無差錯的。它使用數(shù)據(jù)報協(xié)議UDP

      3)原始套接字(SOCK_RAW)

      原始套接字允許對底層協(xié)議如IP或ICMP進行直接訪問,它功能強大但使用較為不便,主要用于一些協(xié)議的開發(fā)。3.3.2

      套接字編程

      使用TCP時Socket編程流程圖如圖2所示。

      服務(wù)器端 socket bind bind listen accept recv/recvfrom send/sendto close connect send/sendto recv/recvfrom close客戶端 socket

      圖2 TCP時Socket編程流程圖

      使用UDP時Socket編程如圖3所示。

      socket listen accept recvfrom sendto或 socket connect send recv close或 recv send closesendto recvfrom或或 圖3 TCP時Socket編程流程圖

      實驗過程

      4.1

      簡單的Socket通信程序設(shè)計

      在Fedora 10操作系統(tǒng)的/home目錄下創(chuàng)建NetCommunicator目錄,并新建client.c和server.c源文件,NetCommunicator目錄如圖4所示。

      圖4 NetCommunicator截圖

      分別編寫Socket通信的客戶端和服務(wù)器端源代碼。編寫完畢,使用gcc編譯上述client.c和server.c源文件生成client和server可執(zhí)行程序(x86平臺),編譯過程如圖5所示。使用arm-linux-gcc編譯上述client.c和server.c源文件生成a_client和a_server可執(zhí)行程序(ARM平臺)。編譯過程如圖6所示.圖5 編譯x86 Socket通信程序過程截圖

      圖6 編譯ARM平臺的可執(zhí)行程序

      PC機測試,測試結(jié)果如下圖所示:

      圖7 執(zhí)行服務(wù)器端程序

      圖8 執(zhí)行客戶端程序

      圖9 服務(wù)器端接收到客戶端發(fā)來的消息截圖

      使用gcc-linux-gcc生成ARM平臺下的可執(zhí)行程序a_client和a_server,編譯結(jié)果如圖10所示。

      圖10 編譯ARM平臺可執(zhí)行程序

      4.2

      全雙工Socket通信程序設(shè)計

      為了實現(xiàn)全雙工通信,服務(wù)端進程和客戶端進程均使用了兩個線程,一個負責收,另一個負責發(fā)。

      在NetCommunicator目錄,并新建clientV2.c和serverV2.c源文件,如圖11所示,編寫完畢,編譯通過生成clientV2和serverV2可執(zhí)行程序。

      圖11 NetCommunicator工作目錄

      PC機測試,測試結(jié)果如下圖所示:

      圖12 客戶端進程

      圖13 服務(wù)器端進程

      實驗總結(jié)

      通過本次實驗,了解了Linux環(huán)境下的Socket程序設(shè)計流程,對網(wǎng)絡(luò)編程有了一定的了解,提高了動手實踐的能力。

      第二篇:嵌入式linu學(xué)習心得

      嵌入式Linux學(xué)習心得

      1、Linux命令

      ls:查看目錄-l以列表方式查看;ls –l 與ll的功能一樣 pwd: 查看當前的目錄

      cd:改變當前操作目錄cd /直接跳到根目錄 cd..回到上一級目錄 cat: 打印顯示當前文件的內(nèi)容信息

      mkdir:創(chuàng)建目錄

      fdisk: 查看硬盤分區(qū)信息,-l以列表方式查看

      ->代表是鏈接文件,類似window下的快捷方式。

      cp: 復(fù)制命令,例子cp 文件名 /home/dir/

      mv: 移動或改名,如mv sonf.confsonf.txt(改名)移動:mv sonf.conf / rm:刪除命令,如rm –f test.c;如刪除目錄rm –fr d

      man:查看某個命令的幫助,man 命令

      2、各系統(tǒng)目錄的功能

      drw—r—w--:d代表是目錄,drw代表當前用戶的權(quán)限,r代表組用戶的權(quán)限,w代表其它用戶的權(quán)限。x代表有執(zhí)行權(quán)限。

      /boot/gruff.conf: 啟動引導(dǎo)程序

      /dev:brw—rw--:b代表是塊設(shè)備。Linux設(shè)備有三種,塊設(shè)備(b開頭)、字符設(shè)備(c開頭)、網(wǎng)絡(luò)設(shè)備。had代表第一個硬盤,hdb代表第二個硬盤。Hdb2代表第二塊硬盤的第二個分區(qū)。3,67代表主設(shè)備為3,從設(shè)備為67./etc:存放的是系統(tǒng)的配置文件。Inittab文件存放不同啟動方式下必須啟動的進程。Inittab文件中有6個啟動level,wait中對應(yīng)著6個level的目錄,respawn代表當一個進程被意外終止了,但會自動啟動的進程,如守護進程。rc.d目錄中存放了一個rc.sysinit文件,里面存放系統(tǒng)初始化配置信息。/etc還有一個vsftpd里面存放tcp、ftp的配置。

      /home : 用戶目錄,存放用戶的文件,/lib:存放庫文件,后綴為so的文件代表動態(tài)鏈接庫。

      /lost+found:系統(tǒng)意外終止,存放一些可以找回的文件。

      /mnt:掛載外部設(shè)備,如掛載光驅(qū):mount –t /dev/cdrom/mnt/cdrom,如

      果在雙系統(tǒng)中,要查看windows中D盤的文件,首先應(yīng)該將D盤的文件映射過來,mount –t /dev/hda2/mnt/windows/d

      /opt:用戶安裝的應(yīng)用程序

      /proc:是系統(tǒng)運行的映射,比較重要。里面的文件數(shù)字代表進程號。每個進程號目錄下包含進程的基本信息。還有其他信息,如cpuinfo等,內(nèi)核支持的文件系統(tǒng)filesystem等。系統(tǒng)支持的中斷interrupts,iomen代表內(nèi)存分配情況。ioport存放IO端口號。還有分區(qū)信息,modole信息,狀態(tài)信息,版本信息

      對于Linux的設(shè)備驅(qū)動程序,有兩種加載模式,一種是直接加載進linux內(nèi)核,一種是以模塊的方式加載到內(nèi)核。

      /sbin: 系統(tǒng)管理的一些工具。如poweroff關(guān)機工具。

      /usr: 安裝系統(tǒng)時很多文件放在此目錄下面,包含一些更新等,include包含的頭文件,lib 是Linux的庫文件,src包含Linux2.4的內(nèi)核源碼

      /var:存放是臨時變量

      3、

      第三篇:嵌入式實驗2

      南昌航空大學(xué)實驗報告

      二0一一 年 10月 16日

      課程名稱: 嵌入式系統(tǒng) 實驗名稱: 串行端口程序設(shè)計 班 級: 080611 學(xué)生姓名: 曹啟斌 學(xué)號: 08061107 指導(dǎo)教師評定: 簽名:

      一、實驗?zāi)康?了解在linux環(huán)境下串行程序設(shè)計的基本方法。掌握終端的主要屬性及設(shè)置方法,熟悉終端IO函數(shù)的使用。3 學(xué)習使用多線程來完成串口的收發(fā)處理。

      二、實驗內(nèi)容

      讀懂程序源代碼,學(xué)習終端IO函數(shù)tcgetattr(), tcsetattr(),tcflush()的使用方法,學(xué)習將多線程編程應(yīng)用到串口的接收和發(fā)送程序設(shè)計中。

      三、預(yù)備知識

      1、有C語言基礎(chǔ)。

      2、掌握在LINUX下常用編輯器的使用。

      3、掌握Makefile 的編寫和使用。

      4、掌握Linux下的程序編譯與交叉編譯過程

      四、實驗設(shè)備及工具

      硬件:UP-NETARM2410-S嵌入式實驗儀,PC機pentumn500以上, 硬盤40G以上,內(nèi)存大于128M。

      軟件:PC機操作系統(tǒng)REDHAT LINUX 9.0 +MINICOM + AMRLINUX開發(fā)環(huán)境

      五、實驗原理

      Linux 操作系統(tǒng)從一開始就對串行口提供了很好的支持,為進行串行通訊提供了大量的函數(shù),我們的實驗主要是為掌握在LINUX中進行串行通訊編程的基本方法。

      1.程序流程圖

      程序流程圖如圖2-3所示:

      圖2-3 程序流程圖

      2串口操作需要的頭文件

      #include /*標準輸入輸出定義*/ #include /*標準函數(shù)庫定義*/ #include /*linux標準函數(shù)定義*/ #include #include #include /*文件控制定義*/ #include /*PPSIX 終端控制定義*/ #include /*錯誤號定義*/ #include

      /*線程庫定義*/ 3打開串口

      在 Linux 下串口文件是位于 /dev 下,串口一為/dev/ttyS0,串口二為 /dev/ttyS1,打開串口是通過使用標準的文件打開函數(shù)操作:

      int fd;/*以讀寫方式打開串口*/ fd = open(“/dev/ttyS0”, O_RDWR);if(-1 == fd){ perror(“ 提示錯誤!”);}

      4設(shè)置串口

      最基本的設(shè)置串口包括波特率設(shè)置,效驗位和停止位設(shè)置。串口的設(shè)置主要是設(shè)置 struct termios 結(jié)構(gòu)體的各成員值。

      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 */ };設(shè)置這個結(jié)構(gòu)體很復(fù)雜,可以參考man手冊或者由趙克佳、沈志宇編寫的《UNIX程序編寫教程》,我這里就只考慮常見的一些設(shè)置:

      波特率設(shè)置:

      下面是修改波特率的代碼: struct termios Opt;tcgetattr(fd, &Opt);cfsetispeed(&Opt,B19200);/*設(shè)置為19200Bps*/ cfsetospeed(&Opt,B19200);tcsetattr(fd,TCANOW,&Opt);校驗位和停止位的設(shè)置: 無效驗 8位

      Option.c_cflag &= ~PARENB;Option.c_cflag &= ~CSTOPB;Option.c_cflag &= ~CSIZE;Option.c_cflag |= ~CS8;奇效驗(Odd)7位

      Option.c_cflag |= ~PARENB;Option.c_cflag &= ~PARODD;Option.c_cflag &= ~CSTOPB;Option.c_cflag &= ~CSIZE;Option.c_cflag |= ~CS7;偶效驗(Even)7位

      Option.c_cflag &= ~PARENB;Option.c_cflag |= ~PARODD;Option.c_cflag &= ~CSTOPB;Option.c_cflag &= ~CSIZE;Option.c_cflag |= ~CS7;Space效驗 7位

      Option.c_cflag &= ~PARENB;Option.c_cflag &= ~CSTOPB;Option.c_cflag &= &~CSIZE;Option.c_cflag |= CS8;設(shè)置停止位:

      1位:

      options.c_cflag &= ~CSTOPB;2位: options.c_cflag |= CSTOPB;需要注意的是,如果不是開發(fā)終端之類的,只是串口傳輸數(shù)據(jù),而不需要串口來處理,那么使用原始模式(Raw Mode)方式來通訊,設(shè)置方式如下:

      options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);/*Input*/ options.c_oflag &= ~OPOST;/*Output*/ 5讀寫串口

      設(shè)置好串口之后,讀寫串口就很容易了,把串口當作文件讀寫就可以了。發(fā)送數(shù)據(jù):

      char buffer[1024];int Length=1024;int nByte;nByte = write(fd, buffer ,Length)讀取串口數(shù)據(jù):

      使用文件操作read函數(shù)讀取,如果設(shè)置為原始模式(Raw Mode)傳輸數(shù)據(jù),那么read函數(shù)返回的字符數(shù)是實際串口收到的字符數(shù)。

      可以使用操作文件的函數(shù)來實現(xiàn)異步讀取,如fcntl,或者select等來操作。char buff[1024];int Len=1024;int readByte = read(fd, buff, Len);6關(guān)閉串口

      關(guān)閉串口就是關(guān)閉文件。close(fd);7空MODEM通訊連接電纜

      一般進行串口調(diào)試使用空MODEM連接電纜,其接線方式如下圖2-4所示:

      圖2-4 實用RS-232C通訊連線

      六、實驗步驟

      1.2.3.4.進入expbasic