999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于openSUSE的SIM900A驅動模塊的設計

2019-11-11 13:14:38楊建軍
電腦知識與技術 2019年27期

楊建軍

摘要:針對廣泛用于緊湊型嵌入式通信設備中的SIM900A模塊的驅動設計,對其組成系統的硬件和基于Linux的驅動構架進行分析;采用典型的字符驅動模式,以openSUSE內核為平臺,設計了SIM900A的字符驅動模塊,模塊中通過將串口的操作封裝于ioctl命令函數中,并引入命令字SETPORTID供應用程序調用方法,使得對串口的操作相比于經典的操作方式更具有靈活性和適應性,并減少上層應用對SIM900A操作的復雜性;現場測試測試結果顯示,該模塊可以方便而簡單地設置串口參數的不同工作方式;相應的上層應用程序相對于不采用封裝串口的驅動,代碼量要節省1/3的量。

關鍵詞:openSUSE;GSM模塊;SIM900A;字符設備驅動;串口

中圖分類號:TP311.52? ? ? 文獻標識碼:A

文章編號:1009-3044(2019)27-0065-03

Abstract: The typical hardware architecture and Linux-based character driver module based on the SIM900A, which is widely used in small embedded devices, has been analyzed under openSUSE system. Then focused on the designing of the driver module, to improve the flexibility of the driver module to the deference of serial ports, a new command word SETPORTID has been introduced, which encapsulated the whole operation of serial port and made the apps more convenient to control the SIM900A through serial interface than the traditional Linux-based character driver. The test app of the AT commands indicates the driver module has an adaptability to different serial port parameters. The amount of codes, compared to apps without encapsulation of serial port, could get a decrease of 1/3.

Key words: openSUSE; GSM module; SIM900A; character device driver; serial interface

1 背景

OpenSUSE是著名Novell公司旗下的 Linux的發行版,發行量在歐洲占第一位。它采用的KDE4.3作為默認桌面環境,同時也提供GNOME桌面版本。它的軟件包管理系統采用自主開發的YaST,頗受好評,其最新版本是13.2。它不僅是優秀的桌面系統,而且作為中小型企業服務器也是有十分的優勢的。SIM900作為SIMCom專為中國市場設計的緊湊型無線模塊產品,屬于雙頻GSM/GPRS模塊, SIM900A采用工業標準接口,工作頻率為GSM/GPRS 900/1800MHz,可以低功耗實現語音、SMS、數據和傳真信息的傳輸。針對基于其Linux平臺的驅動開發進行設計,對其他延展設計具有參考意義。

2 系統構架

本系統中,SIM900模塊采用ALientek公司的ATK-SIM900A-V15開發板,在系統一端采用windows中用VMWare搭載openSUSE13.2的模式進行,這樣做的好處是設計成本較低,整個系統框圖如圖1所示。

在該系統中,SIM900A開發板和PC用串口相連,采用最簡單的通訊方式[1],在PC端,利用虛擬機搭建起openSUSE環境,在配置openSUSE開發環境時,需要將Kernel開發環境的相關包在安裝系統時就選擇好,否則需要在之后重新搭建。系統的工作過程為SIM900A模塊通過串口接受來自串口的AT指令,如果指令格式正確,則執行,否則通過串口立即返回指令錯誤的信息給上位windows主機。上位機接受來自人機接口的動作,根據該動作,構建正確的AT指令,通過串口發送給SIM900A模塊,并等待來自串口的下位無線模塊的執行結果,整個過程基本上采用應答的方式進行。

3 驅動構架

本系統驅動構架使用標準的Linux的字符驅動模式[2][3]開發,在整個系統中的邏輯位置如圖2所示。

在系統中,本設計主要提供一個封裝上層應用的具體需求為SIM900A的AT指令的過程,并將該指令通過串口發送給SIM900A模塊的過程。SIM900A的移動通訊模塊的驅動作為典型字符驅動模式進行開發,在驅動構架上,包含了兩個主要部分:串口控制和SIM900A字符流驅動編寫,串口控制的流程[5][6]如圖3所示:

在串口的操作過程中,就是對/dev/tty0和/dev/tty1兩個文件的操作,在設置串口傳輸協議的參數時,使用tcgetattr和tcsetattr進行讀寫,一般而言,在設置時,采用先讀后寫的方式進行,不需要調整的參數維持原先的值即可;而SIM900A的典型字符驅動模式[2-4]的設計,可以采用如圖4的流程進行:

在SIM900A的驅動的設計中,主要是需要將串口的讀寫嵌入到字符設備驅動的操作函數中去,在這里為了提供對串口號的靈活訪問,故提供一個設置串口端口號的IOCTL控制操作命令SETPORTID,若為0,則選擇tty0,若為1選擇tty1。而其他函數的設計完全是典型的字符設備函數的編寫方式。有了上面的思路,就可以完成SIM900A的基于Linux的設計了。

4 驅動實現

在此,實現SIM900A的字符設備驅動設計,需要進行makefile和C源文件的編寫,makefile是自動編譯規則文件[3]。

4.1 makefile的編寫

在驅動模塊中的makefile和應用程序模塊中的makefile的最大的區別在于需要指定內核編譯鏈接的目錄所在,在本次設計中,內核編譯鏈接目錄用了openSUSE的/lib/modules/ 3.16.6-2-desktop /build,在進行驅動開發,編譯出的模塊所用的庫必須和目標系統的內核模塊的版本保持一致,否則內核模塊的加載就會有問題。下面就是本次設計的Makefile的內容。

通過使用該makefile進行模塊編譯,最終產生sim900a.ko的內核驅動模塊,可以采用insmod將該模塊加載到系統內核中去。

4.2 字符驅動關鍵結構體和函數的設計舉例在各個函數的設計中,對于本用例特殊的函數時需要對串口進行選擇和設置,為此,需要定義串口參數結構體和SIM900A內核控制的結構體,這兩個結構體的定義如下:

4.3 編譯

在完成以上編碼工作之后,就可以在終端窗口中,在驅動文件目錄處用make命令編譯最終產生sim900a.ko,然后利用insmod命令加載之。

4.4 驅動測試結果

在進行該驅動模塊的驅動測試時,應用端的程序需要按照如下的順序進行執行編程處理:

1)找到設備驅動在加載時創建的主設備號;

2)用mknod創建名為“/dev/sim900a”的設備節點;

3)在軟件程序中,調用的次序是先open該設備,然后調用ictl設置串口參數(如果是串口0,則在調用ictl時,需要在串口參數的id號中傳遞0,否則傳遞1即可),然后進行寫操作(主要是AT命令[6]的字符串發送)和讀操作(sim900執行相應命令后的返回數據);

4)關閉設備。

5 結束語

本驅動經測試可以完成簡單的AT命令[7]的發送和結果的接收,可以在SIM900A與系統的兩個不同串口連接后,簡單調整應用程序中的串口號,就可以完成命令的接收和發送。如果需要進一步完善,則需要對AT命令進行分類封裝。

參考文獻:

[1] Michael R Sweet. Serial Programming Guide for POSIX Operating Systems[EB/OL]. 5th ed. http://digilander.libero.it/robang/rubrica/serial.htm#CONTENTS.

[2] 馮國進. Linux驅動程序開發實例[M]. 北京: 機械工業出版社, 2012: 13-25.

[3] 宋寶華. Linux設備驅動開發詳解[M]. 2版. 北京: 人民郵電出版社, 2010: 92-103.

[4] 付智華. Linux字符設備驅動程序設計[J]. 電腦知識與技術, 2010, 6(15): 3941-3944.

[5] 龔建偉, 熊光明. visual c++/turbo c串口通信編程實踐[M]. 2版. 北京: 電子工業出版社, 2007: 168-195.

[6] 華清遠見嵌入式培訓中心. 嵌入式Linux應用程序開發標準教程[M]. 2版. 北京: 人民郵電出版社, 2009: 172-189.

[7] SIMcom. SIM900 AT Commands Set[Z]. 2010.

【通聯編輯:謝媛媛】

主站蜘蛛池模板: 国产极品美女在线观看| 国产综合另类小说色区色噜噜| 小蝌蚪亚洲精品国产| 久久亚洲国产最新网站| 日韩精品一区二区三区免费| 99在线观看精品视频| 精品伊人久久久香线蕉| 国产超薄肉色丝袜网站| 欧洲熟妇精品视频| 欧美亚洲欧美| 亚洲天堂精品在线观看| 欧美在线网| 国产成人午夜福利免费无码r| 国产jizz| 91综合色区亚洲熟妇p| 亚洲娇小与黑人巨大交| 2018日日摸夜夜添狠狠躁| 好紧太爽了视频免费无码| 国产女同自拍视频| 一区二区三区四区在线| 2021国产乱人伦在线播放| 色国产视频| 国产精品自在在线午夜区app| 日韩a级毛片| 国产97公开成人免费视频| 99视频在线免费| 国产全黄a一级毛片| 久久久久青草线综合超碰| 精品少妇人妻无码久久| 欧美成人影院亚洲综合图| 国产剧情一区二区| 青青青视频免费一区二区| 国产第一色| 欧美另类图片视频无弹跳第一页| 日本在线视频免费| 国产精品成人一区二区不卡| 激情无码视频在线看| 国产青榴视频在线观看网站| 中文无码毛片又爽又刺激| 91青草视频| 一级毛片不卡片免费观看| 亚洲无码久久久久| 99这里只有精品在线| 国产JIZzJIzz视频全部免费| 四虎影视无码永久免费观看| 热这里只有精品国产热门精品| 日本色综合网| 亚洲第一精品福利| 日韩美女福利视频| 青青草国产精品久久久久| lhav亚洲精品| 色网站免费在线观看| 亚洲一级毛片在线观| 国产网站黄| 九九线精品视频在线观看| 欧美日一级片| 99久久精品国产自免费| 欧美日韩精品在线播放| 欧美日本在线播放| 中文字幕一区二区视频| 99福利视频导航| 亚洲乱伦视频| 精品无码国产自产野外拍在线| 一级毛片免费不卡在线视频| 精品少妇人妻一区二区| 国产在线精品美女观看| 四虎在线观看视频高清无码| 欧美日韩v| 高清久久精品亚洲日韩Av| 一级做a爰片久久毛片毛片| 东京热高清无码精品| 国产一区亚洲一区| 国产精品一区二区不卡的视频| 国产精品成人一区二区不卡| 熟妇丰满人妻| 国产乱子精品一区二区在线观看| 自拍偷拍欧美日韩| 看av免费毛片手机播放| 国产福利免费视频| 67194亚洲无码| 亚洲欧美另类专区| 98超碰在线观看|