linux调试技巧(1) : 基于高通平台的寄存器配置读取

本文介绍了在Linux系统下,针对高通平台如何使用工具`/system/bin/r`来读取GPIO寄存器配置,以GPIO37为例,详细解析了寄存器地址计算、读取值的解析过程,包括内部上下拉、功能配置、驱动能力和输出状态的判断。

Linux 调试技巧(1)

平台调试中难免需要查看底层寄存器配置,对于高通某些平台,系统提供了工具读取这些值:
举例说明(高通平台中):
可以使用**/system/bin/r** 这个工具
接下来我以一个gpio为例,去如何读取这个gpio的配置:
我们以gpio37为例:
首先查看gpio37配置的物理地址,在芯片手册中找到:
在这里插入图片描述
其中n可以是0-112,代表msm8909的全部gpio口的配置地址,我们要读gpio37的,那么n=37,需要注意的一点是37需要转换为16进制,十进制37,十六进制就是25,
所以gpio37的配置寄存器地址就是:
0x01000000+0x1000*25 = 0x01025000
通过工具可以读取值:
/system/bin/r 0x01025000
读取值为000002c0
转换成2进制为1011000000
接下来查看每一位代表的含义:
在这里插入图片描述在这里插入图片描述
其中 第0-1位代表的是gpio的内部上下拉,通过看结果可知0-1位都是0,代表了内部没有上下拉(No_PULL)
第2-5位代表这个gpio配置的功能,2-5位都是0,然后查看
在这里插入图片描述

<think>嗯,用户想在高通Linux设备上查看具体的CPU型号比如IPQ5018,这是个嵌入式开发场景下的实用需求。用户的提问很明确,但上次提供的引用资料有点混杂——既有芯片参数说明,又有驱动移植文档,甚至还有内核功耗管理的代码片段,这些和当前需求的直接关联度都不高。 用户可能正在调试某款基于IPQ5018的路由器或物联网设备,需要确认硬件信息。考虑到嵌入式系统的特殊性,准备推荐三种可靠方法:首先是直接读取Linux标准设备树信息,这对高通平台最权威;如果用户有内核权限,还可以查看芯片ID寄存器;另外准备补充一个实用技巧是用dmesg过滤启动日志。 注意到上次回复末尾已经生成了相关问题,但这次用户没有要求扩展提问,所以考虑聚焦核心问题作答。特别要强调设备树路径的具体法/qcom/ipq5018@,这是高通SoC的典型命名规则。另外在proc/cpuinfo里看不到具体型号这点需要重点提醒,避免用户走弯路。 用户提供的引用[3]里提到CPU热插拔流程,虽然不直接相关,但说明用户可能接触到底层开发。考虑在附加提示里补充设备树编译选项,万一用户需要调试dtb文件也能用上。 </think>在高通平台Linux系统中,可通过以下方法精确查看CPU型号(如IPQ5018): --- ### 📌 推荐方法 #### 1. **设备树路径查询(最可靠)** ```bash cat /sys/firmware/devicetree/base/model ``` **输出示例**: `Qualcomm Technologies, Inc. IPQ5018` > ✅ **原理**:所有高通SoC的硬件信息均存储在设备树(Device Tree)中,`/sys/firmware/devicetree/base/` 路径直接映射设备树原始数据。 #### 2. **内核启动日志过滤** ```bash dmesg | grep -i "machine model\|soc" ``` **输出示例**: `Machine model: Qualcomm Technologies, Inc. IPQ5018` > 🔍 **说明**:内核启动时会将设备树中的芯片型号信息打印到日志中。 #### 3. **SoC寄存器读取(需内核权限)** ```bash busybox devmem 0x000A0000 32 # 读取高通SoC ID寄存器地址 ``` **输出换算**: `0x50180000` → IPQ5018(高16位为芯片型号) > ⚠️ **注意**:需`CONFIG_DEVMEM=y`内核支持,寄存器地址需参考具体芯片手册[^3]。 --- ### ❌ 常见误区 - **`/proc/cpuinfo` 不显示具体型号**: 仅显示ARM核心信息(如`Cortex-A53`),不会标注高通SoC型号。 - **`lscpu` 命令局限**: 输出通用架构信息(如`aarch64`),无法识别定制化SoC型号。 --- ### 🌰 实例验证(基于引用[2]的IPQ5018平台) ```bash # 登录开发板执行 cat /sys/firmware/devicetree/base/compatible ``` 输出结果通常包含: `qcom,ipq5018`(高通芯片命名规则为`厂商,型号`[^1][^3]) --- ### 💡 附加提示 若上述方法无输出: 1. 检查内核是否启用设备树:`grep CONFIG_OF /boot/config-$(uname -r)` 2. 确认平台驱动已加载:`lsmod | grep qcom_socinfo` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值