国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于ARM+Linux的異步串行通信設計

發布時間:2010-4-9 20:58    發布者:我芯依舊
關鍵詞: arm , linux , 串行 , 通信 , 異步
1 引言

嵌入式系統是繼IT網絡技術之后。又一個新的技術發展方向。隨著嵌入式技術及網絡技術的發展,工業控制設備的網絡功能要求越來越高,系統要求工業控制設備能夠支持TCP/IP,以及其他Intenet協議,用戶能方便的查看設備狀態、設置設備參數、設備采集到的數據通過網絡能及時的傳送到windows或Unix/Linux服務器的數據庫中。隨著集成電路的發展.32位RISC處理器更是受到青睞,ARM是業界領先的16/32位嵌入式RISC處理器技術提供商,占領了全球75%的市場。它可為一個完整系統的開發提供全面的技術支持,其技術具有性能高、成本低和能耗省的特點。

本系統采用的是韓國三星公司生產的一款基于ARM920T內核的S3C2410x處理器,它采用五級流水線和哈佛結構,提供1.1MIPS/MHz的性能,內部有3個獨立的UART控制器,每個控制器都可以工作在Interrupt(中斷)模式或DMA(直接內存訪問)模式,從而實現CPU和UART之間傳送數據,并且每個UART均具有16字節的FIFO(先入先出寄存器),支持的最高波特率可達230.4Kbps。

2 系統的軟硬件設計

在串行通信中,要保證數據傳輸的可靠性和穩定性,硬件設計是必不可少的,本系統選用S3C2410X作為核心器件,要完成最基本的串行通信功能,只需要RXD、TXD和GND即可,但由于RS232C標準所定義的高低電平信號與S3C2410X系統的LVTTL電路所定義的高低電平信號完全不同,LVTTL的標準邏輯“1”對應2-2.3v電平,標準邏輯'0’對應0-0.4V電平,而RS232C標準采用負邏輯方式,標準邏輯“1”對應-5~-15V電平,標準邏輯"0"對應+5~+15V,兩者間通信必須經過信號電平的轉換,目前常使用的電平轉換電路為MAX232。該系統只設計了一路與URAT0相連的RS232C接口電路,通過9芯的D型插頭,與外設可方便的連接,同時設計了數據發送與接收的狀態指示燈LED,當有數據通過串口傳輸時,LED閃爍,便于用戶掌握其工作狀態,以進行軟硬件調試。宿主機即計算機系統,在Linux操作系統下編寫好串口通信程序,通過JTAG接口模塊下載到目標機中,在相應的軟件命令的控制下,通過串行接口線即可實現宿主機與目標機間數據的發送和接收。目標機中的電源模塊提供了開發板所需的正常電壓,各種數據信息可以通過液晶顯示器顯示出來,還可以通過鍵盤模塊來實現對目標機的操作,外擴存儲器模塊可以由FLASH或SDRAM構成,其與S3C2410X的連接如圖1所示


圖1串口電路原理圖

在軟件系統方面,嵌入式Linux操作系統是整個嵌入式系統的核心,由于嵌入式系統存在內存容量和存儲容量不足等問題,必須對Linux進行移植裁剪設計,主要涉及以下幾個方面:

(1)建立開發環境,操作系統一般使用Redhat Linux,通過網絡下載相應的GCC交叉編譯器進行安裝,或用廠家提供的相關交叉編譯器。

(2)配置開發主機,配置MINICOM,一般的參數為波特率115200Baud/s,數據位8位,停止位1位,尤奇偶效驗,軟件硬件流控設為無。

(3)建立引導裝載程序BOOTLOADER,該系統使用的是韓國Mizi公司開發的vivi,該引導程序目前只支持串口傳輸,將編譯好的vivi通過Jflash軟件燒錄到開發板的FLASH中。

(4)內核的裁剪與移植。由于標準的Linux是面向PC的,它集成了許多PC所需要而嵌入式系統并不需要的,因此,在編譯內核時可以卸載不必要的模塊,這樣可以使內核顯著減少, 從而盡可能小的占用內存及存儲宅間,使軟硬件系統得到精簡。

(5)虛擬內存機制的屏蔽,虛擬內存是導致現有Linux實時性不強的原因,可以通過屏蔽內核的虛擬內存管理機制米增強Linux實時性,更好的滿足工業控制的要求,更改的途徑有兩種:一是通過POSIX,二是通過底層編程。

(6)設備驅動的編寫。

(7)開發基于閃存的文件系統,應用程序和重要數據通常都是以文件的形式存放在閃存文件系統中。

(8)上層應用程序的編寫。針對特定的系統應用環境,實現上層應用程序的功能并編寫。基于篇幅的限制,這里只介紹驅動和應用程序的開發。

在Linux中幾乎所有的設備都是文件,對設備驅動的訪問也是以文件操作實現的,無論是字符設備還是塊設備,用戶對設備的操作都是通過虛擬文件系統轉換為設備驅動與硬件操作例程的交互,虛擬文件系統為用戶提供了一個統一的設備訪問接口,使用戶可以透明的訪問設備驅動程序從而簡化硬件的編寫。所以對設備進行操作的調用格式與對文件的操作類似,主要包括open()、read()、write()、ioctl()、close()等。

串口驅動中最主要的就是中斷函數的編寫,該函數最主要的就是完成接收中斷,發送中斷和流控中斷,由于S3C2410X中集成的UART控制芯片中帶有FIFO,為了保證及時接收,接收中斷必須循環處理接收字符直到接收FIFO為空。同時為了防止接收方被發送方淹沒,接收緩沖區剩余空間不足時應立刻啟動流控,設置RTS為0,等上層提取了緩沖區的數據,騰出足夠的空間后在取消硬件流控,恢復接收。對于發送。為了減少發送中斷的產生次數,也采用在一次中斷服務中,循環發送字符直到軟件緩沖區為空的方法。但是在提取發送緩沖區的數據時需要注意判斷軟件信號量nSemaTxGet的值,以防止緩沖區征用。流控中斷處理中,首先要判斷流控類型是停止發送還是允許發送,只需簡單的將軟件標志nTxStop設置為1即呵;若為允許發送,除了要將nTxStop設置為0,還要主動從發送緩沖區中取出一個字符發送,以觸發發送空中斷,使硬件立刻恢復發送。其主要流程圖如下所示:


圖2串口中斷服務流程圖

將編寫好的中斷函數用request_irq()函數注冊到驅動程序中,然后將驅動程序serial.c編譯進內核。其方法為:

(1)改動serial.c源代碼,新建函數int init_serial(void),將設備注冊到此處:result=register_chrdev(92.“serial", &serial_fops);

(2)將serial.c復制到../drivers/char目錄下,并且在../drivers/char下的men.c的intchr_dev_init()函數中增加如下代碼:

#ifdef CONFIG_TESTDRIVE
init__serial();
#endif

(3)在~/drivers/char目錄下的Makefile中增加以下代碼:

ifeq($(CONFIG_TESTDRIVE).y)
L_OBJS+=serial.o
endif

(4)在../arch/m68knommu目錄下config.in字符設備里增加如下代碼:

Bool‘support for testdrive’CONFIG_TESTDRIVE Y

(6)在../dev/目錄下創建串口設備:mknod/dev/serial1 c 92 0c表示是字符設備,92是設備號,0是次設備號。到此已將串口的驅動程序添加到Linux的內核中,將編譯好的內核鶯新下載到開發板上就可以使用串口驅動程序了。

3 目標板與宿主機間通信的實現

(1)打開串口

打開串口和打開普通文件一樣,使用的函數同打開普通文件一樣,都是open函數fd=open ("/dev/ttyS0”,O_RDWR | O_NOCTTY | O_NDELAY),接下來可恢復串口的狀態為阻塞狀態,用于等待串口數據的讀入,可用fcntl函數實現[1],如下所示:

fcntl(fd,F_SETFL,0);

再接著可以測試打開文件捕述符是否引用一個終端設備,以進一步確認串口是否打開,如下所示:isatty(STDIN_FILEN0);該函數調用成功則返回0,若失敗則返回-1。

(2)讀寫串口

讀寫串口操作和讀寫普通文件一樣,使用read(),write()函數即可。其流程網如下所示:


圖3串口讀寫流程圖

將讀串口程序在PC機上編譯,寫串口程序交叉編譯,分別得到宿主機與目標機的可執行文件,將寫串El程序通過Linux下的串口通信軟件Minicom下載到S3C241x0開發板上或將其制作成文件系統燒寫到目標板上,先運行讀串口程序,再運行寫串口程序。最后成功的實現了目標板與宿主機之間的通信。

4 結束語

如今,把嵌入式Linux內核嵌入到32位MCU中,通過構造TCP/IP多種網路協議和基本的通信協議,在利用嵌入式操作系統對底層硬件和網絡協議的支持,以及對內核和虛擬內存機制進行改造,可以保證系統的可靠性和實時性.具有廣闊的應用前景,而且具有開發周期短,系統性能穩定可靠,適應性強等特點。

本文作者創新觀點:本文采用的基于ARM+Linux的系統,可以方便的移植操作系統,實現實時高速數據互訪,擴展應用程序,所有數據町以便捷,可靠的傳輸到遠端。



作者:陳佳男,李欣,張海燕      來源:《微計算機信息》(嵌入式與SOC)2009年第3-2期
本文地址:http://m.qingdxww.cn/thread-10298-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Chiptorials ——使用ATECC608 TrustFLEX實現基本非對稱身份驗證
  • FPGA設計流程培訓教程
  • Chiptorials——如何使用ATECC608 TrustFLEX實現公鑰輪換
  • Chiptorials ——如何將CryptoAuthLib庫用于Microchip安全身份驗證IC
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 综合婷婷丁香 | 高清欧美在线三级视频 | 麻豆网站免费 | 国产人成精品午夜在线观看 | 青青国产精品 | 国产99视频精品一区 | 1024国产欧美日韩精品 | 欧美综合第一页 | 果冻传媒和91制片厂a | 91亚瑟视频 | 失乐园电视剧日本第5集 | 天堂在线观看免费观看 | 国产黄影院 | 亚洲男人天堂2020 | 天堂va在线高清一区 | 欧美xxxx黑人又粗又长 | jizz日本美女 | 性战美乳洋妞 | 最新国产午夜精品视频成人 | 狠狠久 | 欧美资源网 | 免费人成a大片在线观看动漫 | 人人爰人人人人人鲁 | 玖玖爱视频在线 | 亚洲另类中文字幕 | 毛片视频免费观看 | 国产麻豆免费 | 伊人久久大香网 | 中国精品久久精品三级 | 国产一级特黄aaa大片 | 亚洲男女天堂 | 亚洲狠狠婷婷综合久久久图片 | 日韩欧美精品中文字幕 | 亚洲色图第一页 | 日韩精品国产自在久久现线拍 | 色一情一区二区三区四区 | 国产午夜精品免费一二区 | 在线日本韩国 | 日韩一区二区不卡 | 黄页网站在线 | 91欧美精品综合在线观看 |