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.

【通聯編輯:謝媛媛】

主站蜘蛛池模板: 国产精品污视频| 成人免费午夜视频| 国产亚洲欧美在线专区| 成人免费黄色小视频| 久久美女精品| 一级全黄毛片| 国产精品无码AV片在线观看播放| 亚亚洲乱码一二三四区| 97视频精品全国在线观看| 久久毛片网| 国产杨幂丝袜av在线播放| 无码人妻热线精品视频| 欧美另类第一页| 亚洲欧美在线看片AI| 国产福利微拍精品一区二区| 鲁鲁鲁爽爽爽在线视频观看| 久久这里只有精品66| 国产视频 第一页| 久久国产精品麻豆系列| 国产毛片高清一级国语| 91色在线视频| 亚洲一区二区成人| 国产性爱网站| 99视频国产精品| 日韩欧美国产另类| 91精品国产麻豆国产自产在线| 欧美一级一级做性视频| 亚洲水蜜桃久久综合网站 | 无码中文字幕精品推荐| 亚洲欧美精品日韩欧美| 亚洲精品国产精品乱码不卞 | 国产制服丝袜91在线| 好紧好深好大乳无码中文字幕| 热re99久久精品国99热| 国产精品浪潮Av| 亚洲精品第一页不卡| 一级毛片免费观看不卡视频| 亚洲免费人成影院| 69国产精品视频免费| www精品久久| 99久久精品无码专区免费| 成人一区在线| 亚洲大尺度在线| 中文字幕一区二区人妻电影| 国产麻豆va精品视频| 国产成人三级在线观看视频| 国产精品无码制服丝袜| 亚洲日韩国产精品无码专区| 国产91特黄特色A级毛片| 老司机久久精品视频| 嫩草影院在线观看精品视频| 美女一区二区在线观看| 国产在线日本| 亚洲欧美不卡视频| 欧美a级在线| 欧美日韩精品一区二区在线线| 国产女人爽到高潮的免费视频| 中文字幕人成乱码熟女免费| 久久77777| 成人福利免费在线观看| 秋霞一区二区三区| 亚洲无码高清一区二区| 亚洲男人天堂久久| 久久伊伊香蕉综合精品| 成人国产精品一级毛片天堂| 国产小视频网站| 天堂网亚洲综合在线| 国产91av在线| 国产精品久久自在自线观看| 亚洲无码四虎黄色网站| 日韩中文字幕免费在线观看| 国产精品久久久久婷婷五月| 亚洲国产91人成在线| 国内精品视频区在线2021| 亚洲a免费| 黄色在线网| 国产成人三级| 亚洲中文字幕97久久精品少妇| 97se亚洲| 亚洲国产精品无码AV| 国产一区二区三区免费观看| 国产精品自在在线午夜区app|