anheng
2024-04-06 64711122210cfbe23d930620defcaf9aeb89ff22
RK3568开发文档v0.5.md
@@ -395,7 +395,7 @@
原理图
![](/images/work-led.png)
![](images/work-led.png)
DTS文件修改(如果有)
@@ -447,7 +447,7 @@
原理图及分析
![len_buzzer](D:\Desktop\images\len_buzzer.png)
![](images/len_buzzer.png)
@@ -990,29 +990,293 @@
原理图及分析
![image-20240406184645197](./images/4g-1.png)
DTS文件修改(如果有)
内核配置
```
TBD
Device Drivers ->
   [*] Network device support ->
      <*> PPP (point-to-point protocol) support ->
         <*> PPP BSD-Compress compression ->
         <*> PPP Deflate compression
         [*] PPP filtering
         <*> PPP MPPE compression (encryption)
         [*] PPP multilink support
         <*> PPP over Ethernet
         <*> PPP support for async serial ports
         <*> PPP support for sync tty ports
```
内核make menuconfig配置(如果有)
```
xxxx ->
    xxxx ->
         xxxx ->
```
### 3.10.2 应用程序测试
#### 模块开关机
**开机方式**
首先操作GPIO,给4G模块上电
**(注意:开关机按键,复位按键,在开发板上是MPU的GPIO出来后,硬件做了反向的。低电平,上电    低脉冲,复位)**
输入如下命令
```
gpioset 3 0=0
gpioset 3 1=0
```
将这两个引脚拉低后,模块上电如下所示
![](./images/4g-9.png)
**关机方式**
1. 软件方式关机
   先发送AT+QPOWD命令给模块,再拉高引脚
TBD
   ```
   microcom /dev/ttyUSB3 -s 115200
   AT+QPOWD
   gpioset 3 1=1
   ```
   **(注意:在发送AT命令后需要在几秒内拉高gpio引脚,否则模块会再次开启)**
   ![](./images/4g-16.png)
2. 硬件方式关机
   先拉低RESET大于100ms后,拉低电源引脚Power_on
   硬件关机时序如下图所示:
   ![](./images/4g-17.png)
当4G模块上电后,可以在dev目录下看到四个ttyUSB设备
![](./images/4g-2.png)
我们可以使用microcom命令对串口发送AT命令
```c
microcom /dev/ttyUSB3 -s 115200
```
![](./images/4g-3.png)
检测手机卡是否在位
AT+CPIN?
![](./images/4g-4.png)
网络运行商名称
AT+COPS?
![](./images/4g-5.png)
CHN-CT 表示中国电信
网络注册状态
AT+CREG?
![](./images/4g-6.png)
第二个参数为0 表示没有注册网络,为1表示网络已注册
信号强度
AT+CSQ
![](./images/4g-7.png)
数值越大表明信号质量越好;
#### PPP拨号方式
内核配置好后,编译生成新的镜像烧录到开发板中
启动系统时,会看到如下信息
![](./images/4g-8.png)
接下来需要使用到pppd软件,需要通过 pppd 这个软件来实现 ppp 拨号上网 。
下载网址:[Index of /pub/ppp (samba.org)](https://download.samba.org/pub/ppp/)
下载好后交叉编译,在make install的时候可能会报下面这种类型的错误
```
strip: Unable to recognise the format of the input file 'xxxxxxx'
```
解决方法:[ppp-2.4.5移植(交叉编译)_ppp交叉编译-CSDN博客](https://blog.csdn.net/y7u8t6/article/details/101376011)
编译生成好的四个可执行文件:chat  pppd  pppdump  pppstats  将这四个文件拷贝到开发板的/bin文件夹下
输入`pppd -v`如下图所示,表示移植成功。
![](./images/pppd.png)
ppp拨号方式需要编写三个脚本文件存放在/etc/ppp/peer下
默认是没有这些文件夹的,所以需要去创建ppp和peer文件夹,创建好后在peer下创建如下三个脚本文件
**rasppp.sh**
```shell
#!/bin/sh
hide-password
noauth
connect '/bin/chat -s -v -f /etc/ppp/peers/rasppp-chat-connect'
disconnect '/bin/chat -s -v -f /etc/ppp/peers/rasppp-chat-disconnect'
debug
/dev/ttyUSB3
115200
defaultroute
noipdefault
novj
novjccomp
noccp
ipcp-accept-local
ipcp-accept-remote
local
lock
dump
nodetach
#这里我用的是电信卡
user card
password card
#如果是移动或者联通的卡将上面两行改为
#user Anyname
#password Anypassword
crtscts
remotename 3gppp
ipparam 3gppp
usepeerdns
```
**rasppp-chat-connect.sh**
```shell
TIMEOUT 15
ABORT   "BUSY"
ABORT   "ERROR"
ABORT   "NO ANSWER"
ABORT   "NO CARRTER"
ABORT   "NO DIALTONE"
""AT
OK \rATZ
OK \rAT+CGDCONT=1,"IP",""
OK-AT-OK ATDT#777
CONNECT \d\c
```
**rasppp-chat-disconnect.sh**
 ```shell
 ABORT "ERROR"
 ABORT "NO DIALTONE"
 SAY "\NSending break to the modem\n"
 ""\k"
 ""+++ATH"
 SAY "\nGood bye !\n"
 ```
添加完以上三个脚本文件后,现在可以使用 `ppp` 尝试拨号
```
pppd call rasppp &    #后台进行拨号
```
如果拨号正常如下图所示
![](./images/4g-10.png)
从程序的输出中我们可以获得以下信息:
本机IP  10.86.31.158
主要 DNS 服务器:202.103.24.68
次要 DNS 服务器:  202.103.44.150
当我们使用`ifconfig`查看网络信息会发现一个ppp0的网络
![](./images/4g-11.png)
此时我们需要通过上面获得的网络信息来配置这个ppp0网络
```
sudo ip route add default via 10.86.31.158
echo "nameserver 202.103.24.68" | tee -a /etc/resolv.conf
echo "nameserver 202.103.44.150" | tee -a /etc/resolv.conf
```
配置好之后我们就可以上网了,可以ping百度来测试
![](./images/4g-12.png)
#### ECM模式拨号上网
上面的ppp模式拨号较为繁琐,需要大量的步骤依赖pppd软件,并且ppp拨号的稳定性不强,所以接下来介绍ECM模式,只需要AT命令就可以拨号上网
当我们上电4G模块之后,我们发送如下AT命令切换模块的工作模式为ECM
```
microcom /dev/ttyUSB3 -s 115200
AT+QCFG="usbnet",1
```
发送AT命令后,模块会自动重启,如下图所示
![](./images/4g-13.png)
我们在`ifconfig`查看网络时候,可以看到多了一个usb0网络,并且自动获取IP地址
![](./images/4g-14.png)
同样,我们可以ping百度测试上网功能
![](./images/4g-15.png)