android at指令,MSM8953通过ADB进行AT指令操作

1、前言

在嵌入式开发中,我们有时候会需要使用AT指令对AT端口进行操作,例如,在MSM8953的Android平台中,有时候需要使用AT指令对modem进行读写操作,本质上,就是串口设备的读写操作,本文将介绍,如何使用ADB工具,对AT端口进行读写操作。

2、AT指令操作方法

使用ADB登入到Android启动的终端里面去,需要打开两个终端,一个用来读,一个用来写,本文将使用/dev/smd11这个设备节点进行讲解。

打开ADB并登入到系统命令如下:

# adb root

# adb shell

如下图所示:

658f72548fc54a74a8c388d1eadebaa6.png

在打开的两个终端中,我们可以使用cat和echo命令进行读写,在一个终端上使用cat命令去读设备节点,命令如下:

# cat /dev/smd11

另外一个终端则使用echo命令去写设备节点,命令如下:

# echo -e "xxx" > /dev/smd11

效果如下所示:

d56a3c134e92c84710ad92adeba8dd0f.png

在图中可以看到,我们在一个终端里面发送了"AT\r\n"指令,然后另外读的终端里面,设备读出了返回值,并打印出了"OK",这时说明可以使用AT指令对设备进行操作了,可以很方便地进行调试。

既然可以使用AT指令进行modem进行读写操作了,因此,我们肯定可以在设备SoC里面存储一些我们需要的东西了,例如自定义的SN码或者MAC地址:

使用"AT+QCSN?"进行读取modem保存的内容,命令如下:

# echo -e "AT+QCSN?\r\n" > /dev/smd11

读出的内容如下所示:

7f4c03a3f1286aae07332b274e3c0591.png

使用"AT+QCSN="进行modem写操作,命令如下:

echo -e "AT+QCSN="\"9876543210\""\r\n"> /dev/smd11

写入后,并读出modem保存的内容,如下:

2d662999552f1add67f5eaf9d4440891.png

最后,使用命令进行清空操作:

echo -e "AT+QCSN="\"\""\r\n"> /dev/smd11

清空后,读出效果如下:

cf6c9cc8e294c5e70c01b6967e0fd3a2.png

不同平台的的AT指令集一般不一样,需要根据具体的平台进行操作。

3、小结

本文叙述了在MSM8953的Android平台中,如何使用ADB工具对AT指令进行调试操作的方法。

原文:https://www.cnblogs.com/Cqlismy/p/12168110.html

<think>嗯,用户之前已经问过关于CMUX在智能手机通信系统中的基本介绍,现在他们想更深入地了解在Android系统中CMUX的具体划分方式。首先,我需要确认用户已经对CMUX有了一定的了解,所以这次回答需要更专注于Android的实现细节。 用户的问题是关于Android中的CMUX划分,所以需要详细说明Android系统如何利用CMUX协议来管理不同的通信通道。可能需要包括AP和BP的交互,通道类型,以及具体的实现机制,比如使用UART或USB作为物理层。 另外,用户之前的回答里提到了CMUX的基本原理、工作流程、协议标准、应用场景等,现在需要扩展Android特定的部分。需要考虑到Android系统的架构,比如AP和BP的通信,RIL(Radio Interface Layer)的作用,以及如何通过CMUX实现多通道复用。 可能用户需要了解的是实际开发中如何配置和使用这些通道,或者故障排除时如何分析通道的使用情况。所以回答中应该包括具体的通道划分示例,每个通道的用途,以及相关的技术细节,如AT命令的传输、数据传输的通道分配等。 还需要注意用户可能对技术术语不太熟悉,需要用通俗的语言解释,同时保持专业性。例如,解释AP和BP的关系,RIL的作用,以及不同通道如何对应不同的通信功能,如控制、语音、数据等。 此外,用户可能想知道CMUX在Android中的实际应用案例,比如拨打电话和上网同时进行时,CMUX如何管理不同的通道。需要结合具体场景说明通道的动态分配和管理,以及错误处理和流量控制的机制。 最后,应该总结CMUX在Android中的重要性,以及随着4G/5G的发展,CMUX是否仍然相关,或者被其他协议替代的情况,但强调其核心思想的影响。需要确保回答结构清晰,逐步展开,帮助用户逐步理解Android中的CMUX划分。</think>在 Android 系统中,**CMUX(Channel Multiplexing)** 主要用于协调 **AP(应用处理器)** 与 **BP(基带处理器/Modem)** 之间的通信。其核心是通过分时复用技术,将物理接口(如 UART 或 USB)划分为多个逻辑通道,每个通道负责特定类型的数据传输。以下是 Android 中 CMUX 的划分细节: --- ### **1. 物理接口与协议栈** - **物理层**:通常使用 **UART(串口)** 或 **USB** 连接 AP 和 BP。 - **协议层**:基于 **3GPP TS 27.010** 标准实现 CMUX 协议,封装逻辑通道。 --- ### **2. 逻辑通道划分** Android 中 CMUX 的通道划分遵循 **3GPP TS 27.010**,典型配置如下: | **通道编号** | **用途** | **数据类型** | **示例** | |--------------|------------------------------|-----------------------------|------------------------------| | **通道 0** | 控制通道(默认) | AT 指令、Modem 状态反馈 | `AT+CSQ`(信号质量查询) | | **通道 1** | 语音/传真通道 | 语音通话的 PCM 数据 | 通话时的音频流 | | **通道 2** | 数据通道(PPP 或 IP 数据) | 移动网络数据(如 3G/4G 上网) | 浏览器请求的 HTTP 数据包 | | **通道 3** | 短信通道(可选) | SMS 文本或二进制数据 | 接收短信的 PDU 格式数据 | | **通道 4+** | 扩展通道(诊断、GPS 等) | 调试日志、GPS 定位数据 | `AT+CGPSINFO`(GPS 定位信息) | --- ### **3. 通道的动态管理** Android 通过 **RIL(Radio Interface Layer)** 控制 CMUX 通道的分配: 1. **初始化阶段**: - AP 通过 **通道 0** 发送 `AT+CMUX` 指令,激活 CMUX 模式。 - BP 响应并协商支持的通道数量和参数(如波特率、帧格式)。 2. **通道创建**: - 按需动态创建逻辑通道(例如:拨号上网时分配 **通道 2**)。 - 通过 `AT+CMUX` 扩展参数指定通道用途(如 `AT+CMUX=1,0,0,2` 分配通道 2 为数据通道)。 3. **通道释放**: - 数据传输完成后发送 `DISC`(断开)帧,释放通道资源。 --- ### **4. 数据帧封装格式** Android CMUX 使用 **HDLC(High-Level Data Link Control)** 分帧协议,格式如下: ``` | 标志位 (0x7E) | 地址字段 (通道编号) | 控制字段 | 数据内容 | FCS 校验(CRC-16) | 标志位 (0x7E) | ``` - **地址字段**:1 字节,低 7 位表示通道编号(例如 `0x01` 表示通道 1)。 - **控制字段**:区分帧类型(如 `UI` 帧用于用户数据,`SABM` 帧用于建立逻辑链路)。 --- ### **5. 典型场景:通话与上网并行** 1. **通话时**: - **通道 1** 传输语音数据(PCM 编码)。 - **通道 0** 发送控制指令(如 `AT+CHLD=2` 保持当前通话)。 2. **上网时**: - **通道 2** 传输 PPP 协议封装的 IP 数据包。 - AP 通过 RIL 将 Socket 请求映射到 **通道 2**。 3. **接收短信**: - BP 通过 **通道 3** 发送 `+CMT` 通知,AP 读取短信内容。 --- ### **6. Android 实现的关键模块** 1. **RIL Daemon(rild)**: - 负责与 Modem(BP)通信,解析 AT 指令和 CMUX 帧。 2. **QMI/QCSI(可选)**: - 在高通平台中,CMUX 可能与 QMI(Qualcomm MSM Interface)协议结合使用,进一步划分逻辑服务。 3. **PPP 守护进程**: - 管理数据通道(通道 2),将 Modem 的 IP 数据转发到网络协议栈。 --- ### **7. 调试与问题排查** - **查看通道状态**: - 通过 `adb logcat` 过滤 RIL 日志,观察通道分配和错误信息。 - 使用 `AT+CMUX?` 查询当前 CMUX 配置。 - **常见问题**: - **通道冲突**:多个应用同时请求同一通道导致数据混乱(需优化 RIL 调度)。 - **CRC 校验失败**:物理接口干扰导致丢包,需检查波特率或硬件连接。 --- ### **总结** 在 Android 中,CMUX 通过动态划分逻辑通道,实现了 **控制、语音、数据、短信** 的并行传输。其核心是 RIL 层与 Modem 的协同工作,确保多任务场景下的资源高效利用。尽管现代 4G/5G Modem 逐渐转向 QMI/MBIM 等更高效的协议,但 CMUX 的设计思想(如通道复用)仍深刻影响移动通信系统的架构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值