|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
9 n6 [) r9 X) t! @* `4 D; Y9 t/ X" Z! u) A
一、Gobinet/QMI-WWAN/PPP拨号概述
) G! i$ d4 ?( a' {. G! m1. Gobinet拨号
' V5 x" P u O( ?" y" h, n* H
# Z: h/ t: Y6 @* PGOBI 高通Gobi无线宽带芯片技术,只需一个模块即可支持多种移动宽带网络和众多移动运营商。高通公司称全新的芯片将基于Gobi 4G LTE无线基带、MDM9615和MDM9215。这种技术可以在FDD和TDD网络下进行LTE连接,同时支持HSPA+和EV-DO网络、2G/3G网络。这意味着用户可以在本地使用高速4G LTE网络,在其他地方使用3G网络。Gobi平台在MDM芯片组的基础上还提供了软件增强层,这样可以使用不同技术下的无线连接更简单。: M$ c1 B h$ k5 M) O. e0 Q
9 t5 ^4 P: X( y7 n q) M4 @7 k
2. QMI-WWAN协议拨号
6 b7 g5 d( B+ f# C4 D# p( Z1 R" Q( y% D v4 w
QMI: Qualcom Message InteRFace8 L3 @3 A- ^/ v. ?
) B ]( e; d5 r# Y ~
MSM: Mobile station mode# S0 ^, Y; g) |+ O1 C; j- [
. ]2 v; Z- k6 q/ e, n" g: lAP: Application Procesor! K7 C+ b: N3 c6 ?7 K% d2 v
8 ~# [. U, T3 m" n. V. r- G
高通平台目前都是非对称多核心,最主要的是AP和Modem。两个处理器怎么进行通信呢,我们把AP和Modem当作两个主机,问题就变得了很简单,TCP/IP协议不是一种非常成功的进程间跨主机通信方式。高通没有采用这种方式,但是借鉴了TCP/IP的框架设计。9 Q& Z3 i1 b2 {0 X8 l
5 j8 |: Q1 u8 @" N- d4 W, [
Qualcomm MSM Interface,作用用于AP和BP侧的交互,通俗说法就是让设备终端TE(可以是手机,PDA,计算机)
: w% x$ b8 T$ A. h7 M# v* q4 P4 i7 ]* F, D5 h" I
对高通BP侧的AMSS系统进行操作,如调用函数,读取数据,设置其中的NV项等。
: }. i* L- H. H4 N4 y/ s4 W3 N! o& q% V- ?6 z2 J. p$ V1 J7 ?
3.PPP协议拨号:点对点协议
1 S# S! J6 r- c- h) y& K' A
F G ~9 E# b8 }PPP(点到点协议)在拨号过程中用于MS和PC间数据交互、协商。在拨号流程的初期首先开启的就是PC和MS直接的PPP过程,在拨号成功后,还需要依靠PPP协议对IP包进行封装传输数据。" N( i% z) s2 A* X+ {4 M
2 w9 |. Q% @& |8 w' r- J1 B
官网源码:https://ppp.samba.org+ m0 d$ ~0 n# ]9 L1 s
/ h3 E3 K7 h) ^2 q$ P: B
二 、驱动检查$ R" \. m7 w, ]6 N, c
8 A5 Y* p7 W/ X/ g
( I0 j& Z" l n; _3 J1 z+ C
2 d# _( O8 D l
首先检查是否有USB设备信息。
2 d/ u# ?3 l/ I8 i8 j1 z( j, w( R- l+ F' v+ `/ v
9 E& s% ~5 h8 ~
- p+ l# f/ ~5 G$ ~2 I3 Z( _5 W0 D& T6 H: K9 q4 g! g0 q
[backcolor=rgba(18, 18, 18, 0.5)]
$ y( N G2 L5 N( i+ V. p) |0 P' j; C, o4 z9 Q2 F
- U, x% C7 F5 Y; P& O& `2 P
0 M2 ]( S7 ^( M, i$ u; ~4 ~' U
) w7 G5 I) u) r. N* f' g, H. g. J编辑切换为居中4 y- T8 X( `" G
0 w( Z, O) Y4 n1 |# q4 n
; w" J1 I9 Q8 {+ r% ]
: G7 k- {! |" f- `
5 D6 i0 _$ b; U* ]# L, m$ a1 i
8 ]# R2 Q; B* g6 ?8 `5 u+ y$ F- m1 t* W& Y9 |
% m) q' a+ x+ U. j
0 F6 d! C; t; a# p: H9 d; @! Y% y6 @+ q6 p
# z& g% I- W% w; z. r
然后在dev目录下查看设备。2 R5 ^5 E; R5 m: h; B( w
! u' e- e6 E9 o0 x5 B" |5 p9 B, ]5 F2 }: F4 `
- s0 P, [+ m, \
& g" v9 r0 ~1 I5 W8 W' G. H' T$ F [backcolor=rgba(18, 18, 18, 0.5)]
; S1 P3 E' m7 I6 F% R1 `8 J: i/ s J+ s7 f, B
" k; B% N8 e* v9 c& {6 w3 |/ j0 Y. c7 q
2 ^: B3 `6 U+ n1 E" f. v编辑切换为居中
" g3 x3 R2 ?3 T& _2 P3 @
2 ~7 c8 I. C! w2 l( e6 n6 T
8 K2 a' v- \0 v/ K, S4 f5 @8 n
/ k4 o$ m w- H
' E2 K$ Y; T7 K6 z" W! G) Q7 u( E8 @+ V6 ~% `8 l5 B
1 ^2 X% O# ~' x9 z6 ]
8 S/ W. z0 U$ B. ]7 T
( T1 V! C W s2 b- v1 m$ S; Q( U9 s, r' \
另外在dev下还有一个qcqmi0。* }: h+ ?& W8 n
/ j% v1 }3 V6 s1 ~/ Q
1 X6 P1 {" f' A1 O
( u. B6 `/ x W5 b! s1 M$ H/ i, A
[backcolor=rgba(18, 18, 18, 0.5)]
8 }7 m% y8 M2 B. a, |: c6 K& |6 J$ z) v" J. M' L
# f( z, x4 S1 X3 W$ a5 \
) `. a* Q% J1 z' H
! d l( d, M0 H w- ~
编辑切换为居中- M$ D' p! r4 Z* W `! K
' }* y! P5 p: I8 ]
9 d, c+ N: t$ ~% P
6 s! a5 r y; L1 R
+ h3 W( U* j7 l: |* v; H3 e, |. W0 \
& v/ Q% G! U: n8 o
: e# C/ N0 _1 p# Z! ]" C9 b7 l
4 A- Q% j! a' I7 z1 d
; V) f" s$ h3 t6 y9 F: g说明驱动已经集成了GobiNet。
?% Q# Y; F" R+ d5 Q" `, P6 `0 N" y' ]7 ~ E+ |; v+ v5 }
三、拨号上网. G9 [, K; p- i# p( Z+ C. a& d
拨号程序使用移远提供的quectel-CM,这是一个4G连接管理程序,交叉编译后得到可执行bin“quectel-CM”,将quectel-CM下的Makefile文件修改成如下,然后 make
% M, A3 z# ?9 ?9 z% q( |
7 D/ G" V" k5 M& T! n; V, ACC:= aarch64-linux-gnu-gcc% t# R. R6 A0 @$ X
9 c6 \% f+ N D
[backcolor=rgba(18, 18, 18, 0.5)]$ o0 ~3 t$ N1 K+ Z S' {
. O; _. `2 b8 ?/ i
" j) O* T- h1 G9 r# b: b' @4 N; B; y$ a6 u, c! X9 z& U! A- J
: i/ V9 a# l& a7 a- R. y编辑切换为居中4 s `7 ?3 Q% _
! b$ g2 K, I: I7 \; v$ r6 A- z1 u1 o, u6 f: T- \: j
9 X* |' [; L; r) k& d# g
6 y! X( T' B$ O, r
% W, ]4 H2 L! W6 \$ t8 G' i7 Q( H+ P3 A( G% E8 S
把这个bin放到OK3588-C开发板上启动后上述一、二驱动没有问题的情况下直接执行该bin就可以。将quectel-CM可执行程序拷贝到OK3588-C开发板中。$ e+ K1 m! ~3 l1 U, J
3 a" |; i* p6 n% @【注】移动是[cmnet],电信是[ctnet]。! X9 f0 I, x1 k3 L6 e) N& d& q7 |
5 }5 @# e0 e% d& q! K3 |" d, f
$ ./quectel-CM -s ctnet &root@ok3588:~# [03-16_23:36:36:353] WCDMA<E_QConnectManager_Linux&Android_V1.1.34[03-16_23:36:36:356] ./quectel-CM profile[1] = ctnet///0, pincode = (null)[03-16_23:36:36:364] Find /sys/bus/usb/devices/1-1 idVendor=2c7c idProduct=0125[03-16_23:36:36:370] Find /sys/bus/usb/devices/1-1:1.4/net/usb0[03-16_23:36:36:375] Find usbnet_adapter = usb0[03-16_23:36:36:380] Find /sys/bus/usb/devices/1-1:1.4/GobiQMI/qcqmi0[03-16_23:36:36:386] Find qmichannel = /dev/qcqmi0[03-16_23:36:36:454] Get clientWDS = 7[03-16_23:36:36:486] Get clientDMS = 8[03-16_23:36:36:518] Get clientNAS = 9[03-16_23:36:36:550] Get clientUIM = 10[03-16_23:36:36:583] Get clientWDA = 11[03-16_23:36:36:614] requestBaseBandVersion EC20CEFAGR06A08M4G[03-16_23:36:36:710] requestGetSIMStatus SIMStatus: SIM_READY[03-16_23:36:36:710] requestSetProfile[1] ctnet///0[03-16_23:36:36:774] requestGetProfile[1] ctnet///0[03-16_23:36:36:806] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW[03-16_23:36:36:837] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED[03-16_23:36:36:902] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW[03-16_23:36:40:870] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW[03-16_23:36:41:958] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW[03-16_23:36:42:118] requestRegistrationState2 MCC: 0, MNC: 0, PS: Attached, DataCap: 1XEVDO_REVB[03-16_23:36:42:182] requestRegistrationState2 MCC: 0, MNC: 0, PS: Attached, DataCap: 1XEVDO_REVB[03-16_23:36:42:214] requestSetupDataCall QMUXResult = 0x1, QMUXError = 0xe[03-16_23:36:44:166] requestRegistrationState2 MCC: 460, MNC: 11, PS: Detached, DataCap: UNKNOW[03-16_23:36:45:158] requestRegistrationState2 MCC: 460, MNC: 11, PS: Attached, DataCap: LTE[03-16_23:36:45:222] requestRegistrationState2 MCC: 460, MNC: 11, PS: Attached, DataCap: LTE[03-16_23:36:45:285] requestSetupDataCall WdsConnectionIPv4Handle: 0x871aef60[03-16_23:36:45:382] requestRegistrationState2 MCC: 460, MNC: 11, PS: Attached, DataCap: LTE[03-16_23:36:45:413] requestQueryDataCall IPv4ConnectionStatus: CONNECTED[03-16_23:36:45:478] ifconfig usb0 up[03-16_23:36:45:496] Fail to access /usr/share/udhcpc/default.script, errno: 2 (No such file or directory)[03-16_23:36:45:500] busybox udhcpc -f -n -q -t 5 -i usb0udhcpc: started, v1.30.1udhcpc: sending discoverudhcpc: sending select for 10.21.127.53udhcpc: lease of 10.21.127.53 obtained, lease time 7200[03-16_23:36:46:534] requestRegistrationState2 MCC: 460, MNC: 3, PS: Attached, DataCap: 1XEVDO_REVB[03-16_23:36:46:566] requestRegistrationState2 MCC: 460, MNC: 3, PS: Attached, DataCap: 1XEVDO_REVB
2 |. T3 _+ J8 Z 这就是拨号成功了,当然也可查看IP信息。
6 e: `. L- A i, l" o! T3 ~6 ]+ \; o% q. L2 t; J
k V% ]+ b0 O$ P! E8 }/ y6 \/ ~* C2 W
" S* p3 R; \( f
[backcolor=rgba(18, 18, 18, 0.5)]9 @( z0 O6 l8 _
: b a6 @ U! v7 | C- O
1 h/ I5 `3 F0 q) F
7 D3 s! Z$ P: ]! p' j4 A% j9 R1 j$ ~$ N: G8 D2 F
编辑切换为居中4 A% M$ f! D& V( V, k+ l f- x
2 \9 j0 Z! ]0 j+ V' U1 S8 s
2 ? t+ M. J# w' |
. V5 ^' ?: y- _. F+ x, L! o# ^' f" A) f# y0 t
7 R; l: I) h8 W( h- i4 w
) d0 w# Y4 O& b6 X3 U
$ s5 o4 r9 p3 [) O8 K+ y% I" y* \: D# b- W: R4 @
. ]( X, V: B6 e4 ~5 a7 V
5 X4 E: f+ I, }! i( K$ u
" y; Z' `7 |* S1 Z }0 H! [+ K- A! \& j0 K/ e* _
接下来就是ping一下看是否可以联网。
# w; ?! z/ ^0 u/ F2 W1 g5 J: F5 Y+ U J4 `
# ping 211.149.226.120
$ r8 W1 u9 ]8 ^" v5 k5 D9 ]. X9 t( y
* `; G' |0 X+ ^$ ^0 |. n$ _2 K$ Y: B+ m- e. ^* K, s* [. h- W
2 a9 Q- n" B/ F& z0 S- S
# L5 ?% L' h- A" J [backcolor=rgba(18, 18, 18, 0.5)]
: ^$ A% i. I$ {7 A6 w- l" u! X+ P; v3 c0 l8 Q/ t
0 l {6 }: N0 ?; Y+ Q! o( W% J- l5 l/ x, Z. A% Q! r
$ ]2 ~* I( I7 [) i* I, Q& E编辑切换为居中! z1 L' o+ H; R+ d
4 \1 i9 e @8 D
* O5 b! f' T0 J" n- p6 F1 Z( t2 w
: ]" E6 @3 t; j; [8 ]
& ^5 d2 s6 L% F8 A/ ~+ J
( ^0 B Y% F2 x- h: G C0 m+ B
, N+ b- i5 T. ^6 @( ]' W0 r$ i& z) H; J4 J
, S$ E7 q& `. I
U# H( _7 |6 A4 U可以看到能ping通外网。# \ h: ]. L* {' e& N
% Z2 o5 K. W7 b" K
这样设备就可以作为一个移动的网关的,配上无线网络,就可以做一个无线路由器了。6 M1 t) ]9 h8 A6 i3 ?, u( D- L
$ ]/ g, J: W% W6 ~# k- _7 S7 C; a- w
( N. J; }+ D) o4 | R
|
|