在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于VxWorks嵌入式實現多串口驅動的開發與通信設計

牽手一起夢 ? 來源:網絡整理 ? 作者:佚名 ? 2020-01-16 09:37 ? 次閱讀

VxWorks操作系統是美國Wind River公司于1983年設計開發的一種嵌入式實時操作系統(RTOS),良好的持續發展能力、高性能的內核以及友好的用戶開發環境,使其在嵌入式實時操作系統領域居于領先地位,廣泛應用于現代的各種嵌入式計算機系統中,比如軍事指揮系統、武器控制系統工業控制系統中。而在這些系統中,往往不是單個計算機的控制,而是多個計算機以及其他設備組成通信網絡共同完成控制作用,因此,對于每一個嵌入式計算機除了連接必需的外設之外,還需要考慮計算機之間的通信。計算機間常用的通信方式是利用串行口來實現的。本文在VxWorks多串口通信的實現過程中未采用常見的標準VxWorks虛擬設備ttyDrv驅動方式,而是在用戶的驅動程序中直接對硬件進行初始化,以中斷方式進行串口通信。

1、環境及配置

VxWorks嵌入式開發采用圖1所示的主機一目標機方式。

基于VxWorks嵌入式實現多串口驅動的開發與通信設計

其他硬件與本文關系不大,這里主要介紹串口卡,該卡是DIAMOND SYSTEM公司生產的EMERALD-MM-8型8串口擴展卡(以下簡稱EMM8),是基于2片ST16C554芯片的8串口集成板卡,每一路串口均可單獨配置成符合RS-232C/RS-422A/RS-485協議規范,最高速率可達115.2kb/s。通用異步收發器UART)ST16C554用來擴展4路串口通道。每路通道各有一組16B的收發FIFO和移位寄存器,用來緩沖數據和串并轉換。每個通道有12個8b內部寄存器,用來存放收發數據以及配置該串口的工作模式,需要在初始化時對各寄存器進行設置。本文根據工程的要求,將卡上的硬件跳線設好,如:各串口使用RS-232C協議,按照datasheet進行硬件跳線。其中J9的配置較為重要,如圖2所示。

基于VxWorks嵌入式實現多串口驅動的開發與通信設計

D、C、B、A 四位表示base address,從data sheet中查表可知其跳線情況,以本項目為例,base address為0x300,則D、C、B、A分別為out、out、in、in,為1100。

2、3、4…15為該卡可用的中斷號,要使用哪個中斷就必須將其跳為in。本項目由于中斷資源不足,只能用一個中斷號即7號中斷,因此只將7設為in。

CK為頻段范圍跳線,對ST16C554來說必須為in。

另外,EMM8在系統啟動時會從板上的EEPROM 中讀取各個端口的基本配置信息,主要是端口映射地址及分配的中斷號,這些信息可以在啟動后編程修改,但一般是固定的,因此只要在EEPROM 中配置一次并保存即可。

2、多串口驅動開發

2.1 I/O系統與串口設備驅動層次結構

I/O系統與串口設備驅動層次如圖3所示。

基于VxWorks嵌入式實現多串口驅動的開發與通信設計

圖3中最底層就是要編寫的驅動程序。在這里主要完成對具體硬件的各種操作,以及與上層的接口。硬件驅動層上面是ttyDrv和tyLib。這一層比較特殊,是Vxworks專門為串口設備準備的一個虛擬驅動庫,它把跟具體硬件無關的操作集成在了這一層中。這樣用戶只編寫與硬件有關的驅動和跟這一層的接口函數即可。從總的結構講,這2層都屬于設備驅動的范疇。再上一層是I/O系統層,Vxworks的I/O系統向上提供了7個基本的I/O接口,供應用程序調用;向下提供與各種設備驅動程序的接口。I/O系統把應用程序跟驅動程序有機地連接起來。最頂層就是用戶根據應用需要編寫的應用程序。ttyDrv是一個虛擬設備驅動,用于處理I/O系統與底層實際設備驅動程序(可以是用戶設計的驅動程序)之間的通信。使用ttyDrv控制串口是比較常見的串口驅動實現方式,實際上,直接對硬件進行初始化,以中斷方式進行串口通信也是可行的方式,且更加靠近底層,可以更自由、高效的控制串口。

2.2 EMM8驅動開發

首先是對各串口的初始化和中斷配置,初始化包括設置波特率以及數據格式。

在實際的工程應用中,需要8個串口共同使用一個中斷(中斷資源不足),實現8串口的全雙工同時收發。難點在于使用同一個中斷且不能丟數據,對于驅動使用同中斷問題,關鍵是接收數據的中斷服務程序ISR。經過探索,不論是否使用單中斷,讀EMM8卡上I/O RegisterMap表中的一個中斷狀態寄存器(interrupt statusregister),可以指出當時是哪一個串口收到數據,讀出該串口的數據即可。但是這種實現方法經過測試在接收時丟數據。后經研究發現,中斷狀態寄存器并不一定在某一個時刻只有一個端口位發生跳轉。即CPU收到中斷后,有可能是幾個串口“同時”收到數據,這是因為中斷控制器將同一個CPU中斷分給了不同的串口。從CPU端看來只有一個中斷,但從各串口來講,這個中斷有可能是幾個串口“同時”產生的。因此要對中斷狀態寄存器進行輪詢,由發生跳轉的串口位接收該串口的數據。修改后,經過編寫用例測試,可以穩定地使用單中斷接收數據且不影響數據的發送。

2.3 驅動測試

首先是各串口的功能測試,使用“串口調試助手”軟件工具通過PC機與各目標機串口通信,收發數據,然后通過屏幕顯示得到的數據,對比規定的預期結果,檢測數據收發是否正確。經多次驗證,工作穩定,通信正確。

綜合測試:使用2臺PC104分別安裝STV2050CPU模塊和EMM8多串口模塊各1塊,2臺PC通過網口(交換機)連接2臺PC104,2個EMM8通過8根RS-232雙頭串口線連接。2臺PC通過網口使用tornado的shell工具下載啟動程序。2臺PC104分別稱為1主機和2主機。測試方法是:1主機同時發送8串口的數據,2主機8串口接收并轉發回1主機。1主機接收返回的數據,判斷是否通信錯誤。經檢驗正確通信300000次無錯,多次驗證。完成對EMM8多串口通訊模塊全雙工收發的測試。

經過以上測試,表明本文所述的多串口卡通信實現方法有效,所開發模塊穩定可靠。

3、結束語

本文介紹了VxWorks嵌入式系統中的多串口卡通信的實現過程,因篇幅有限,不能列出詳盡代碼。本文以EMM8為例,采用驅動直接訪問硬件的方法,較為簡潔、高效地解決了單中斷多串口全雙工通信的問題,滿足了項目需求,并經過了測試和驗收。為日后類似問題的解決提供了一些參考和經驗。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5141

    文章

    19537

    瀏覽量

    315035
  • 操作系統
    +關注

    關注

    37

    文章

    7091

    瀏覽量

    124961
  • 串口
    +關注

    關注

    14

    文章

    1585

    瀏覽量

    78660
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    嵌入式系統論文集錦

    的設計與實現.HTTP在嵌入式系統中的應用及擴展.Ipv6高級套接口的研究和實現.ISaGRAF在SUPMAX500組態軟件中的應用.IXP1200中微引擎和StrongArm通信的技
    發表于 08-01 22:03

    本人從事vxWorks bsp及驅動開發,狂愛嵌入式系統架構,望各...

    本人從事vxWorks bsp及驅動開發,狂愛嵌入式系統架構,望各路達人互相學習,共同進步
    發表于 12-28 15:02

    嵌入式軟件專家-珠海

    嵌入式軟件專家(工作地點:珠海)職位要求:1、七年以上使用嵌入式Linux和RTOS(掌握VxWorks/eCos/ucOS-II/T-Kernel中任何一種即可)開發
    發表于 03-06 15:13

    嵌入式VxWorks招聘

    本帖最后由 mcuris 于 2014-6-6 17:26 編輯 職位描述:基于PowerPC、ARM、X86等處理器平臺的嵌入式操作系統VxWorks上的BSP、驅動程序和中間件開發
    發表于 06-06 14:00

    如何去實現一種串口卡通信?求過程

    本文介紹了VxWorks嵌入式系統中的串口卡通信實現過程。
    發表于 06-03 07:08

    嵌入式實時操作系統VxWorks串口通信實現

    嵌入式實時操作系統VxWorks串口通信實現
    發表于 03-29 12:27 ?19次下載

    嵌入式DHCP Server如何在vxWorks

    嵌入式DHCP Server如何在vxWorks中的軟件實現
    發表于 03-29 12:27 ?23次下載

    基于VxWorks嵌入式系統復合通信模式

    基于VxWorks嵌入式系統復合通信模式
    發表于 03-29 12:30 ?12次下載

    基于VxWorks嵌入式系統復合通信模式

    嵌入式系統與VxWorks實時操作系統應用愈加廣泛的背景下,結合嵌入式系統對于各類實時通信方式的不同需要,提出基于控制應用的復合通信模式;
    發表于 05-15 13:45 ?9次下載

    嵌入式DHCP Server在vxWorks中的軟件實現

    隨著嵌入式時代的來臨,嵌入式的應用越來越廣。首先介紹DHCP協議的工作原理,然后詳細描述嵌入式DHCP服務器在vxWorks中的軟件實現過程
    發表于 01-11 09:34 ?33次下載

    基于嵌入式操作系統VxWorks中的網絡通信

    基于嵌入式操作系統VxWorks中的網絡通信
    發表于 08-31 15:57 ?3次下載
    基于<b class='flag-5'>嵌入式</b>操作系統<b class='flag-5'>VxWorks</b>中的網絡<b class='flag-5'>通信</b>

    嵌入式VxWorks實時操作系統中串口通信實現

    嵌入式VxWorks實時操作系統中串口通信實現
    發表于 08-31 16:03 ?7次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>VxWorks</b>實時操作系統中<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的<b class='flag-5'>實現</b>

    嵌入式Linux串口擴展的驅動設計方案解析

    本方案介紹WK2X系列UARTs在嵌入式Linux(Android)下擴展串口方案,尤其是嵌入式Linux串口擴展的
    發表于 08-31 15:35 ?1612次閱讀
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>串口</b>擴展的<b class='flag-5'>驅動</b>設計方案解析

    嵌入式VxWorks實時操作系統中串口通信實現

    嵌入式VxWorks實時操作系統中串口通信實現(通信網絡基礎課后答案第三章)-
    發表于 09-30 11:15 ?13次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>VxWorks</b>實時操作系統中<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的<b class='flag-5'>實現</b>

    想學嵌入式開發怎么學?看這份超詳細的嵌入式學習路線

    linux系統開發3、嵌入式linux驅動開發嵌入式目前主要面向的幾個操作系統是,LINUX,WINCE、
    發表于 11-03 09:51 ?13次下載
    想學<b class='flag-5'>嵌入式開發</b>怎么學?看這份超詳細的<b class='flag-5'>嵌入式</b>學習路線
    主站蜘蛛池模板: 国产伦精品一区二区三区 | 亚洲福利视频一区二区三区 | 亚洲插 | 日本不卡视频免费的 | 999色综合| 亚欧精品一区二区三区 | 奇米第四狠狠777高清秒播 | 欧美性极品xxxxx | 欧美日韩国产一区二区 | 亚洲一区二区在线视频 | 亚洲合集综合久久性色 | h在线观看免费 | 免费无毒片在线观看 | 亚洲综合色一区二区三区小说 | 国产精品国产三级国产普通话对白 | 99久久综合国产精品免费 | 亚洲欧美人成网站综合在线 | 国产美女一区二区三区 | 国产精品午夜自在在线精品 | 全国男人的天堂网站 | 国模最新私拍视频在线观看 | 国产国拍亚洲精品mv在线观看 | h小视频在线观看 | 免费看黄色的网站 | 午夜特片网| 亚洲欧美v视色一区二区 | 亚洲乱亚洲乱妇41p 亚洲乱亚洲乱妇41p国产成人 | 椎名空中文字幕一区二区 | 黄色地址| 免费视频现线观看 | 欧美黑人xxxxxxxxxx | 激情福利网站 | 国产精品成人观看视频国产奇米 | 一本大道一卡二卡 | 双性强迫开宫灌满h | 婷婷开心激情网 | 成年女人毛片免费视频 | 天天做天天爱天天爽综合区 | 国产日本久久久久久久久婷婷 | 无内丝袜透明在线播放 | 国模私拍视频 |