|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
+ [- r9 X- {. h
. ^% r' y- X/ e/ X一、Gobinet/QMI-WWAN/PPP拨号概述( d/ J. B0 f+ O0 C- H7 {
1. Gobinet拨号
6 P# P6 I" t9 F0 F: ~1 M/ `1 s' I: X
GOBI 高通Gobi无线宽带芯片技术,只需一个模块即可支持多种移动宽带网络和众多移动运营商。高通公司称全新的芯片将基于Gobi 4G LTE无线基带、MDM9615和MDM9215。这种技术可以在FDD和TDD网络下进行LTE连接,同时支持HSPA+和EV-DO网络、2G/3G网络。这意味着用户可以在本地使用高速4G LTE网络,在其他地方使用3G网络。Gobi平台在MDM芯片组的基础上还提供了软件增强层,这样可以使用不同技术下的无线连接更简单。7 M( F. R j( [& Z
' e" q* S# g) ~! |. R+ C
2. QMI-WWAN协议拨号8 o0 s) p, X- a
$ Y5 F- Y' ?2 [# A5 z
QMI: Qualcom Message InteRFace& X! ?8 ?! N) s4 e, T
/ ~3 q( `# k. P n6 qMSM: Mobile station mode) {0 g0 n& {3 ?$ }; T7 m) E0 |
0 c. f$ ^* Q8 A, u" m- P7 {
AP: Application Procesor7 y n* O: e2 S& D, d
3 l4 y& c3 i. T- J6 M
高通平台目前都是非对称多核心,最主要的是AP和Modem。两个处理器怎么进行通信呢,我们把AP和Modem当作两个主机,问题就变得了很简单,TCP/IP协议不是一种非常成功的进程间跨主机通信方式。高通没有采用这种方式,但是借鉴了TCP/IP的框架设计。' B# t: y5 r# r) B' e
( d2 k6 e6 `: i/ i- ]9 c- R
Qualcomm MSM Interface,作用用于AP和BP侧的交互,通俗说法就是让设备终端TE(可以是手机,PDA,计算机)
8 K6 }( n7 z( E) p. q# e- G9 ]0 p& v6 T
对高通BP侧的AMSS系统进行操作,如调用函数,读取数据,设置其中的NV项等。1 @8 V$ h0 r4 _& y+ m, r- Q
9 [. ^) v/ ?' Y9 m2 z2 m
3.PPP协议拨号:点对点协议
+ B }2 v) n4 H( r" S+ h+ O% _
5 l f) {- T7 _% [9 C) ]PPP(点到点协议)在拨号过程中用于MS和PC间数据交互、协商。在拨号流程的初期首先开启的就是PC和MS直接的PPP过程,在拨号成功后,还需要依靠PPP协议对IP包进行封装传输数据。& r& {' h/ A- W7 z! G4 G
0 E3 I3 S2 q% B, D ~% b! {
官网源码:https://ppp.samba.org
7 z { t Q: k) z/ \4 I0 I- Z4 S# s; m% L6 M2 ?
二 、驱动检查7 M* K( y0 Z: b1 U1 i6 Y g
: p% n& S& P7 i7 s) b& Y- ^1 F
/ b) G5 m% I5 ?. v" t1 I
; |( `1 Y2 z* M0 W' c. }/ }首先检查是否有USB设备信息。3 j& Z. d9 c' r! j6 t
" m! @4 f; d) X) x2 r9 M4 b+ N) R7 T- i9 ~* T+ O* X( M5 L! s
/ `8 ]( Z% q* `( ~$ H- [- w" `: F3 v; ~3 ^
[backcolor=rgba(18, 18, 18, 0.5)]
: R+ K% }. t! `' ^/ f8 e
) n. A5 T% Z p
6 F/ V& R: c0 Y! ]' `
0 K8 V3 `8 q6 r1 U
0 F7 h7 x8 {7 O7 k6 b# E+ w; k编辑切换为居中
4 a5 A3 z7 Q6 B# U" n8 B' S0 l( s1 M. n$ i% ]9 o- j+ s
X6 \! G- G4 ~6 O7 Q; s9 Q7 \
3 x9 a1 h% r1 z& ^+ `% C( O0 U5 o4 w( c0 r: E8 j3 P$ o7 V- D& Q# h
) i$ _1 `( S% e9 P6 A
. N: V( l/ t; Q% k6 W( E) w7 u
* H8 X7 u" g( r, U
" k6 b! R1 T+ A$ z* j
. g. g9 i3 V' I2 i3 }2 F1 Q1 |然后在dev目录下查看设备。
- i; R1 K, T% P5 M7 C/ D; Y5 M2 x& G4 `9 z7 o! x- D/ X! w \3 h. B: f
. J; \ S- d4 R- c% c
1 R: o9 q2 C* b0 `; W! X
" H$ t- x+ s- Q8 f [backcolor=rgba(18, 18, 18, 0.5)]
5 c0 N0 t3 P: N8 k0 B" }) w$ ] X/ [/ o
& Y& @% v: A% O6 ?) `2 u
& I( v: F4 {" M5 `, B" s0 p# W' G8 v9 `
9 O. W; q( m& ]% p4 \
编辑切换为居中+ b* `% G2 q6 K6 N! C
, H% M2 w; q- I0 l1 S9 h, D8 c
) y) y( W5 Q9 D# A2 h5 }5 t9 n, `- a+ p% r( r$ a' G. o8 u A- G* o4 K
& f6 G- p+ m0 |/ E) [9 O4 V% z- R ^# q. k
3 d/ t& k' w, c/ p
1 t& h9 {5 N; X1 O: V) H; R: h
( u7 W8 p$ \! [; k; ?8 {/ T6 K( |+ @
5 p! R) Y4 m6 C7 _" H, M+ Z另外在dev下还有一个qcqmi0。
7 A3 j: t" [0 n& ]: B/ G4 C$ s" Q- M
9 a! P$ |# j. e+ a1 E7 M7 ^# E% M+ [
4 Y- u1 o' O* D- u1 m2 z
[backcolor=rgba(18, 18, 18, 0.5)]3 y+ P; |; X+ [
0 r% |3 \: z) L, B) R' Y2 H8 W
( Q! ^9 i) F# F; ` j I
/ H$ r) l4 n( M/ o: [
N" t" o; c. r! Z- A5 ~ f2 R编辑切换为居中
1 S# b. d% F- v+ v5 b+ m
9 i; M$ q: D# Z6 u1 Z
& ~9 D/ v/ ]8 C/ z8 T8 y% F7 D: f+ g6 k7 Z! f3 `% d
- y" R4 z Y- ]& V# K T, S) V& d, I# q7 ~ s
+ I' D1 W( z8 p: Z6 H7 p4 M, g
. q) M" e2 s, z3 W3 p& d' W; I, D( J' {) R8 ~) S1 c
- p; x8 S- j& m1 ]
说明驱动已经集成了GobiNet。6 R" x6 b8 j" X! _
. _7 r, ~5 U2 w0 ]) e! R三、拨号上网) K5 e8 |: z: }5 D( X/ F
拨号程序使用移远提供的quectel-CM,这是一个4G连接管理程序,交叉编译后得到可执行bin“quectel-CM”,将quectel-CM下的Makefile文件修改成如下,然后 make/ N+ i7 d7 `/ y& \
" J( d: {% T- j2 v4 c
CC:= aarch64-linux-gnu-gcc" h) H$ u5 n' C% j% W1 o
5 v9 S( L+ y) j! W/ {! ^
[backcolor=rgba(18, 18, 18, 0.5)]; m1 F9 C9 q! |% Y+ I( L
8 ?; b a. {" c
+ j7 Q9 U5 k' J( W; t% |0 _) w8 c" _& j
! p3 P3 o ?8 S) K编辑切换为居中& A8 q& i7 J# h& ~( N
7 A- v* w, ?' T6 R' d1 Q p7 Z W6 O- w6 S( F# |: \1 d
( e" K2 H+ `! C6 g/ r
- c* x+ I6 p. _2 p! B7 A; t& d# ^4 |+ b4 N4 Q4 u
7 D9 j1 {, e8 h3 K* b. o [1 T
把这个bin放到OK3588-C开发板上启动后上述一、二驱动没有问题的情况下直接执行该bin就可以。将quectel-CM可执行程序拷贝到OK3588-C开发板中。
9 _. ~- Y3 {" ^/ ^
5 A& ?* \0 u: E3 Z/ I【注】移动是[cmnet],电信是[ctnet]。
) W( E; }8 I* S7 }7 T
$ n4 i3 h7 F% E: v) m2 {$ ./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: {* O& o1 v% Q F: [$ y( M# e
这就是拨号成功了,当然也可查看IP信息。2 q6 y4 X3 A7 o
t. Z/ i0 K h2 P& C. l: C
4 ^7 d Z$ S8 r, b. l6 @. K* p! h0 l
) A# R+ C' x: N( _9 G( K9 ^ [backcolor=rgba(18, 18, 18, 0.5)]3 G; o0 U m$ n6 x* j
, r" E s3 Q% c1 ?
Y4 E9 q) c2 w6 v% b$ N4 j, G
* }, w, \' j$ t6 j: M0 ]( K6 G" A4 N& R4 x& w" E$ N
编辑切换为居中8 C1 X( H; T8 [9 H' B
: ^- G6 K- c& A$ T
, b* j9 i2 c& [ R: H, R; }
: i7 ^/ r$ H0 C
9 j3 ~6 n3 c" i1 J) G' T+ C; Z/ U! r; W7 z2 g2 A
8 m2 M" G) q5 K6 x3 u2 s3 R% g1 w
4 ?1 o2 u2 l L4 x. I0 ` S! x- g4 k8 q: b! S5 G. w6 m+ U
. x1 e$ t. |" }4 {9 r( y4 D. H
0 t' ?6 Q0 Q" O7 A
+ n1 w4 R+ e q1 [
$ _: w3 B! S# G( ^0 {' L. {
接下来就是ping一下看是否可以联网。
4 i6 X2 W# l y3 S8 q, g8 g; M/ j: O* l$ j
# ping 211.149.226.120- e( @4 M7 S' v/ [% F; q' Z
% u, [( g3 s6 v' c, f$ I+ l# F
/ y, h* B5 }2 O. n& x6 h, }& q9 j. E3 N4 `
2 F, u6 N3 n& X8 o& P( }) g [backcolor=rgba(18, 18, 18, 0.5)]. H& k4 z3 M5 l4 v% e; W$ ^# J
) R, H% z0 a5 X a
0 g* A; f1 s! |9 o
$ v. o+ }/ m* T$ O9 L; |3 R8 l0 v' B. A+ l2 p2 h' I$ i. [1 X* u
编辑切换为居中
. f8 \ c4 e! ?% j+ C. P& p
* g2 _0 O# |4 X( u" U. y) J& i" O3 s
* s: K! i# g! v# X h. j" i+ M/ x2 \: M7 a+ [3 B7 b2 F6 Z# ]4 l
" m3 |9 L% W) n" g6 T1 X: x) ? a7 ] ]" e
) E$ @$ A$ |% p' n* U. @
/ X; r$ ]& {+ l7 G" @2 P! a; b
# O' I! p( O- ~4 M' T可以看到能ping通外网。2 ]& C( z3 r$ U4 O) ?- r
/ L7 B, j, a) D, N$ ^
这样设备就可以作为一个移动的网关的,配上无线网络,就可以做一个无线路由器了。8 w; D$ A1 G' t3 P! D" k
2 p1 [ l* Y7 g( q$ @2 N; h
3 N% J5 g( X: X. P6 l5 I! q, y
|
|