1. 程式人生 > >《Linux作業系統-系統移植》第8章 USB-4G/LTE移植 -第2節 USB-4G移植(中興ME3760移植)

《Linux作業系統-系統移植》第8章 USB-4G/LTE移植 -第2節 USB-4G移植(中興ME3760移植)

ME3760 是一款Mini PCI-E介面的LTE 模組,支援LTE TDD band38(2.6GHz),band39(1.9GHz),band40(2.3GHz); LTE FDD band7(2.6GHz),向下相容TD-SCDMA A頻段(2.1GHz)和F頻段(1.9GHz)以及GSM900MHz,GSM1800MHz. 支援最大100M/50Mbps的理論上下行資料傳輸速率.

2.1核心檔案修改

1. 增加具體裝置驅動
檔案:linux-2.6.35.3/drivers/usb/serial/option.c
找到如下行:

static struct usb_device_id option_ids[] =
{}

在其下新增內容:

{ USB_DEVICE(0x19d2, 0x0199) }

這裡寫圖片描述
2. Usb 串列埠驅動過濾 NDIS 介面
由於 usb 串列埠跟 ndis 都屬於非標準 cdc 裝置,需要防止 ndis 口被 usb 串列埠驅動載入導致 ndis 驅動無法順利完成載入。
檔案linux-2.6.35.3/drivers/usb/serial/usb-serial.c
找到 usb_serial_probe 函式,在函式中找到如下行:

type = search_serial_device(interface);

在其前面新增如下內容:
這裡寫圖片描述
3.複製原始碼
把官方驅動包裡的usb/cdc_ether.c cdc_encap_ok.c cdc_encap_ok.h三個檔案複製到核心linux-2.6.35.3/drivers/net/usb目錄下。
【注意】核心原始碼本來就修改過這個檔案,則不宜直接覆蓋,請注意保留原來的修改。
4.修改Makefile檔案


在linux-2.6.35.3/drivers/net/usb/下的Makefile
找到如下行:

obj-$(CONFIG_USB_USBNET) += usbnet.o

在其下新增內容:

obj-m += cdc_encap.o

這裡寫圖片描述
5.修改cdc_ether.c 檔案
方式一:按照下圖所示註釋掉所有語句,在有if語句後面加;
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
方式二:
717行: (以717這一處為例修改)

devdbg (dev, "no rx skb");  

改成

netif_dbg(dev, timer, dev->net, "no rx skb");

【注】這都是除錯資訊,可以註釋掉。
6.修改cdc_encap.c檔案


新增如下紅框中的標頭檔案。

#include <linux/slab.h>

這裡寫圖片描述

2.2編譯核心

  1. 進入核心目錄,執行 make menuconfig
  2. 依次進入 device drivers—>usb support—>usb serial converter support 將如下元件作為模組進行編譯:USB driver for GSM and CDMA modems(新增usb轉串列埠驅動)
    這裡寫圖片描述
  3. 依次進入 device drivers—>Network device support—>usb Network Adapters 將如下元件作為模組進行編譯:Mutil-purpose USB Networking Framework(新增Ndis驅動)
    這裡寫圖片描述
  4. 重新編譯並安裝核心
    $make uImage -j4
    $make modules

5.載入模組
把drivers/net/usb/usbnet.ko cdc_encap.ko cdc_ether.ko三個模組複製到開發板上,然後按順序載入,如下:

# insmod usbnet.ko   
# insmod cdc_encap.ko   
# insmod cdc_ether.ko

如果ME3760模組已經插在開發板上了,驅動安裝成功後則會列印如下資訊:

這裡寫圖片描述
6.檢查驅動
把ME3760模組插入開發板,執行如下命令:
$lsusb
這裡寫圖片描述
$ll /dev/ttyUSB*
這裡寫圖片描述
$ ifconfig -a

can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:64 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

can1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:64 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 00:04:00:00:00:00  
          inet addr:192.168.1.111  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:50 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8772 (8.5 KiB)  TX bytes:0 (0.0 B)

eth1      Link encap:Ethernet  HWaddr 00:04:00:00:00:01  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Base address:0x8000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

usb0      Link encap:Ethernet  HWaddr 26:BB:59:1C:0D:AA  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

usb1      Link encap:Ethernet  HWaddr AE:DE:12:C9:54:BD  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

【注】usb1是ME3760模組的網路名,不同模組可以不一樣。

2.3 ME3760聯網應用

2.3.1方式一:minicom撥號

步驟一:撥號獲取IP地址

$minicom
(進入撥號,在撥號前需要設定minicom,關於minicom用法請看[minicom移植筆記-點選進入](https://blog.csdn.net/u013162035/article/details/80363681)])
AT+CFUN=0
AT+CGDCONT=1,"IP"
AT+CFUN=1
AT+CREG=1
AT+CEREG=1
AT+CGACT=1,1
AT+ZGACT=1,1

撥號成功後會返回如下資訊。
這裡寫圖片描述
本4G網絡卡繫結在usb1上,因此需要對映到usb1上。
步驟二:設定IP地址
$ifconfig usb1 up
步驟三:設定閘道器
$ifconfig usb1 10.66.85.114
$route add default gw 10.66.85.114
步驟四:設定DNS
$vi /etc/resolve.conf
新增nameserver 8.8.8.8
這裡寫圖片描述
【注】不新增DNS也可ping。
步驟五:測試
$ping www.baidu.com
成功後返回返回如下資訊。
這裡寫圖片描述

2.3.2方式二:microcom撥號

步驟一:撥號獲取IP地址
$microcom -s 115200 /dev/ttyUSB0(進入撥號)

AT+CFUN=0
AT+CGDCONT=1,"IP"
AT+CFUN=1
AT+CREG=1
AT+CEREG=1
AT+CGACT=1,1
AT+ZGACT=1,1

撥號成功後會返回如下資訊。
這裡寫圖片描述
本4G網絡卡繫結在usb1上,因此需要對映到usb1上。
步驟二:設定IP地址
$ifconfig usb1 up
步驟三:設定閘道器
$ifconfig usb1 10.66.85.114
$route add default gw 10.66.85.114
步驟四:設定DNS
$vi /etc/resolve.conf
新增nameserver 8.8.8.8
這裡寫圖片描述
【注】不新增DNS也可ping。
步驟五:測試
$ping www.baidu.com
成功後返回返回如下資訊。
這裡寫圖片描述

【注】microcom測試
microcom是在製作根檔案系統時busybox裡自帶命令。-s指定波特率為115200,也可以在前面加 -t 7000(表示監聽的時間為7000ms), 通過ctrl+x可以退出監聽
使用串列埠工具向ME3760模組傳送AT命令:
$ microcom -s 115200 /dev/ttyUSB0

傳送AT,返回OK
傳送AT+CSCS=?,返回+CSCS: (“GSM”,“HEX”,“UCS2”)
則表示ME3760模組已經可以正常工作了。

【注1】usb驅動檔案

【注2】移植環境

虛擬機器:Ubuntu12.04
開發板:IMX283 - ARM9
核心:linux-2.6.35(版本不同可能會導致移植不成功)
4G模組:中興ME3760(如果是其他模組,要支援USB,才可採用此法移植)

相關推薦

Linux作業系統-系統移植8 USB-4G/LTE移植 -2 USB-4G移植中興ME3760移植

ME3760 是一款Mini PCI-E介面的LTE 模組,支援LTE TDD band38(2.6GHz),band39(1.9GHz),band40(2.3GHz); LTE FDD band7(2.6GHz),向下相容TD-SCDMA A頻段(2.1GHz

【學習筆記】慕課網—Java設計模式精講 3 軟體設計七大原則-3-6 迪米特原則最少知道原則

/** * 軟體設計七大原則-迪米特原則 學習筆記 * @author cnRicky * @date 2018.11.10 */ 迪米特原則(最少知道原則) 一個物件應該對其他物件保持最少的瞭解。又叫最少知道原則 迪米特原則主要強調:儘量降低類與類之間的耦合 優點:降低類與類之

樹和二叉樹--Huffman樹-計算機17級帶詳細解析

解析在下面,有什麼問題歡迎各位大佬指正 p1-1: 這個主要得看懂題,其實就是在考你哈夫曼樹的構造:每次把權值最小的兩顆二叉樹合併 ,越往下肯定權值越小,所以這句話肯定是對的 x2-1: d肯定不一定啊 x2-2: x2-3: x2-4

Linux作業系統-系統移植8 USB-4G/LTE移植 -4 USB-4G移植移遠EC20開發-Gobi撥號

開發環境 主機:ubuntu12.04 開發板核心版本:linux-2.6.35 【注】EC20支援PPP撥號,Gobi撥號和QMI撥號,筆者使用的是Gobi撥號,關於另外兩種撥號請參考官方文件,後文的附件連結中已經給出了參考文件。 3.1 USB Serial

Linux作業系統-系統移植8 USB-4G/LTE移植 -1 USB-4G移植C華為E392u­924G移植

1.3 PPP編譯 1.獲取原始碼 PPP官網下載:https://download.samba.org/pub/ppp/ 下載解壓ppp-2.4.7.tar.gz原始碼,存放在/home/farsig

Linux作業系統-系統移植8 USB-4G/LTE移植 -3 USB-4G移植移遠AG35開發-GPS解析及程式設計

檢視參考手冊,移遠帶有GPS的晶片的USB Serial如下。 2.1應用簡介 1、若不使用 AT+QGPSCFG 指令對AG35進行配置,則會以預設引數開啟GPS引數,NMEA埠開始上報,"gpsnmeatype"預設值為31,上報間隔為1s,每次上報所有種

Linux作業系統-系統移植8 USB-4G/LTE移植 -1 USB-4G移植 F華為E392u­924G移植

1.6啟動撥號指令碼 $mkdir shell_script $cd /shell_script $ vi usb.sh 輸入以下內容,然後儲存退出。 usb_modeswitch -W -c /etc

Linux作業系統-系統移植7 工具移植 -3 Mini-xml移植

開發環境: 主機環境:Ubuntu 12.04 目標機環境:Exynos4412開發板(Linux 3.0.5) 一個輕量級的xml庫,可完成讀寫。適合系統資源受限的嵌入式裝置。 原始碼下載:https

Linux作業系統-系統移植7 工具移植 -2 SSH服務移植

開發環境: 主機:Ubuntu12.04 開發板:Exynos4412 2.1編譯相關檔案 SSH協議族可以用來進行遠端控制, 附加的SFTP協議可輕鬆實現在計算機之間傳送檔案。而實現此功能的傳統方式,如telnet(終端模擬協議)、 rcp ftp、 rlog

Linux命令應用大詞典-8 日期和時間

硬件時鐘 顯示 linu 時鐘 主機 style hwclock 硬件 暫停 8.1 cal:顯示日歷信息 8.2 date:顯示和設置系統日期和時間 8.3 hwclock:查看和設置硬件時鐘 8.4 clock:查看和設置硬件時鐘 8.5 clockdiff:主機之間

Linux學習筆記】8 Linux shell基礎知識

linux centos shell 通配 8.1shell介紹shell是一個命令解釋器,提供人機交互。支持特定語法。每個用戶都可以有自己特定的shell(bash)。CentOS7默認bash(Bourne Agin Shell)。其他還有zsh、ksh等。 8.2命令歷史命令歷史存放於

易學筆記-Linux命令-8:從shell眼中看世界

第8章:從shell眼中看世界/8.0 echo:單詞分割機制 echo:單詞分割機制 格式:echo  結果集,這裡的結果集可能是 某個字串:abc 多個字串:abc  edf 命令結果: ls  

連結裝載與庫 8 linux共享庫的組織

由於動態連結的優點,大量的程式使用動態連結機制,導致系統裡面存在數量極為龐大的共享物件。必須得有很好的機制來管理這些共享庫,否則這些共享物件散落在各個目錄下,長期的維護,升級,都有會很大的問題。 8.1 共享庫版本 8.1.1 共享庫的相容性 共享庫的版本會不斷的更新,以修正原有

linux核心設計與實現 —— 中斷和中斷處理78

中斷和中斷處理 中斷的目的:讓處理器最快地響應外部硬體的請求。 中斷本質上是一種特殊的電訊號,由硬體裝置發向處理器,處理器反映到作業系統中,最後由作業系統處理這個中斷電訊號。 不同的裝置對應的中斷不同。每個中斷都通過一個唯一的數字標記,這個標記通常被稱為中

82講特殊函數介紹

turn 函數介紹 spl .cn scan margin urn printf return #include"stdio.h" int fact(int n) //求階乘函數 { int f=1,i; fo

8:Shell腳本歸檔與壓縮

extract config 生成 -- dir exclude 硬盤分區 txt name 第8章:Shell腳本歸檔與壓縮   定期備份不可小視,我們可以通過shell腳本來實現備份自動化。其中數據備份一般要使用到歸檔與壓縮,歸檔與壓縮對於系統

82《MonkeyRunner源代碼剖析》MonkeyRunner啟動執行過程-解析處理命令行參數

path 轉載 iss 命令 code rst pri bsp ack MonkeyRunnerStarter是MonkeyRunner啟動時的入口類,由於它裏面包括了main方法.它的整個啟動過程主要做了以下幾件事情:解析用戶啟動MonkeyRunner時從命令行傳輸

8 包管理

重新 裝包 自己的 align love ocs 重定向 客戶端程序 target 本文目錄: 8.1 Linux上構建C程序的過程 8.2 包基礎知識 8.3 rpm管理包 8.4 yum管理包 8.5 補丁工具diff和patch 8.6 源碼編譯安裝程序 8.1

【C語言學習】《C Primer Plus》8 字符輸入/輸出和輸入確認

multipl 字符輸入 信號 first while 目的 bcd 問題 img 學習總結 1、緩沖區分為完全緩沖區(fully buffered)I/O和行緩沖區(line-buffered)I/O。對完全緩沖輸入來說,當緩沖區滿的時候會被清空(緩沖區內容發送至

Java編程思想讀書筆記_8

讀書筆記 div spl class alt oid ava 函數 opened 覆蓋私有方法 1 class Father { 2 private void f() { System.out.println("Father::f()"); } 3