当前位置: 首页 > article >正文

BMC开发实战:i2c-tools显示‘UU’?别慌,这是PCA9545 I2C Switch在正常工作

BMC开发实战i2c-tools显示UU别慌这是PCA9545 I2C Switch在正常工作当你在BMC环境下使用i2cdetect扫描物理I2C总线时看到PCA9545的地址显示为UU忙碌状态而不是预期的设备地址这可能会让不少嵌入式工程师感到困惑。实际上这通常是I2C子系统正常工作的表现。本文将深入解析这一现象背后的原理并提供实用的调试技巧。1. I2C多路复用器基础与PCA9545工作原理I2C多路复用器如PCA9545是现代硬件设计中不可或缺的组件它允许单个I2C主控制器与多个I2C从设备通信。这种设计在BMC基板管理控制器系统中尤为常见因为BMC需要监控和管理大量传感器和设备。PCA9545是一款4通道I2C多路复用器其主要功能包括通道选择通过写入控制寄存器选择激活的通道地址映射标准7位地址为0x708位地址为0xE0/0xE1自动隔离非活动通道与总线隔离防止信号冲突当Linux内核加载PCA9545驱动后它会为每个通道创建虚拟的I2C适配器。这正是为什么你在/sys/class/i2c-dev/目录下能看到类似i2c-11-mux这样的设备节点。2. 为什么i2cdetect会显示UUi2cdetect工具显示UU表示该地址被内核标记为正在使用。对于PCA9545这类I2C多路复用器这是预期行为原因如下2.1 内核驱动管理机制当PCA9545驱动成功加载后内核会执行以下操作将物理I2C总线上的PCA9545设备标记为已占用为每个通道创建虚拟I2C适配器在sysfs中建立相应的设备节点这种设计防止了其他驱动意外访问已被多路复用器占用的设备地址确保系统稳定性。2.2 底层检查流程当执行i2cdetect -y 11时工具会尝试设置每个地址为从设备模式ioctl I2C_SLAVE如果地址已被占用如PCA9545内核返回EBUSY错误i2cdetect将EBUSY状态显示为UU# 典型输出示例 # i2cdetect -y 11 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: UU -- -- -- -- -- -- --3. 验证PCA9545是否正常工作虽然i2cdetect显示UU但你可以通过多种方式确认PCA9545已正确初始化和工作。3.1 检查内核日志首先查看dmesg输出寻找PCA9545相关的初始化信息dmesg | grep pca954正常输出应类似于[ 2.716915] pca954x 6-0070: registered 4 multiplexed busses for I2C switch pca95453.2 检查sysfs中的设备节点验证虚拟适配器是否已创建ls /sys/bus/i2c/devices/ | grep mux典型输出可能包括11-0070 i2c-25 i2c-26 i2c-27 i2c-633.3 扫描虚拟总线PCA9545的每个通道都对应一个虚拟I2C总线你可以直接扫描这些总线# 列出所有I2C总线 i2cdetect -l # 扫描特定虚拟总线例如i2c-25 i2cdetect -y 254. 高级调试技巧4.1 手动控制通道选择通过sysfs可以手动控制PCA9545的通道# 查看当前通道状态 cat /sys/bus/i2c/devices/11-0070/idle_state # 设置空闲状态-1表示保持当前-2表示断开所有通道 echo -2 /sys/bus/i2c/devices/11-0070/idle_state4.2 使用i2cget/i2cset直接访问你可以绕过驱动直接与PCA9545通信# 读取当前通道选择寄存器 i2cget -y 11 0x70 # 选择通道0bit01 i2cset -y 11 0x70 0x014.3 设备树配置检查确保设备树(DTS)中正确配置了PCA9545i2c600 { compatible aspeed,ast2600-i2c-bus; #address-cells 1; #size-cells 0; reg 0x600 0x80; pca954570 { compatible nxp,pca9545; reg 0x70; #address-cells 1; #size-cells 0; i2c-mux-idle-disconnect; }; };关键参数说明i2c-mux-idle-disconnect空闲时断开所有通道reg必须与硬件地址匹配通常0x705. 常见问题排查5.1 看不到UU设备完全未识别如果i2cdetect中连UU都没有显示可能的问题包括硬件连接问题检查I2C线路是否正常确认上拉电阻是否正确配置验证电源供应驱动未加载lsmod | grep pca954 modprobe i2c_mux_pca954x设备地址冲突确认没有其他设备使用相同地址检查PCA9545的地址选择引脚配置5.2 虚拟总线无法访问下游设备如果能检测到UU但无法访问下游设备检查通道激活# 激活通道0 echo 0x01 /sys/bus/i2c/devices/11-0070/select_chan验证下游设备地址确保没有地址冲突检查每个下游设备的供电和连接总线速度兼容性PCA9545支持标准模式(100kHz)和快速模式(400kHz)确保主控制器和下游设备速度兼容6. 性能优化建议在BMC环境中I2C多路复用器的配置会影响整体监控系统的响应速度。以下是一些优化建议合理规划I2C拓扑将高频访问设备放在不同通道低频监控设备可以共享通道通道切换延迟# 测量通道切换时间示例 time i2cset -y 11 0x70 0x01中断使用如果硬件支持启用PCA9545的中断功能可以减少轮询开销电源管理pca954570 { compatible nxp,pca9545; reg 0x70; low-power-mode; };7. 替代调试工具除了i2cdetect还有其他工具可以帮助调试I2C多路复用器7.1 i2ctools进阶用法# 详细转储I2C总线信息 i2cdump -y 11 0x70 # SMBus快速测试 i2ctest 117.2 使用sysfs接口# 查看所有I2C设备 ls /sys/bus/i2c/devices/ # 查看适配器信息 cat /sys/class/i2c-adapter/i2c-11/name7.3 内核调试接口# 启用I2C调试输出 echo 1 /sys/module/i2c_core/parameters/debug # 查看调试信息 dmesg -w理解i2cdetect显示UU的原理对于嵌入式系统开发至关重要。这不仅是PCA9545正常工作的标志也是Linux I2C子系统正确管理多路复用器的体现。通过本文介绍的工具和方法你可以快速验证I2C拓扑结构定位潜在问题并优化系统性能。

相关文章:

BMC开发实战:i2c-tools显示‘UU’?别慌,这是PCA9545 I2C Switch在正常工作

BMC开发实战:i2c-tools显示UU?别慌,这是PCA9545 I2C Switch在正常工作 当你在BMC环境下使用i2cdetect扫描物理I2C总线时,看到PCA9545的地址显示为UU(忙碌状态)而不是预期的设备地址,这可能会让不…...

从安装到第一个Cypher查询:用Docker一键部署Neo4j 5社区版,告别环境冲突

容器化部署Neo4j 5社区版:告别环境冲突的极简实践 在数据科学和复杂关系分析领域,Neo4j作为领先的图数据库解决方案,正被越来越多的企业采用。然而,传统安装方式常伴随着Java版本冲突、环境变量污染等问题,让开发者头…...

基于SpringBoot + Vue的学生交流互助平台(角色:学生、管理员)

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 💛博主介绍&#…...

基于SpringBoot + Vue的眼科患者随访管理系统(角色:患者、医生、管理员)

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 💛博主介绍&#…...

基于SpringBoot + Vue的知识产权管理系统(角色:用户、知识产权人、管理员)

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 💛博主介绍&#…...

OpenClaw安全指南:Qwen3.5-9B执行权限管控与操作审计

OpenClaw安全指南:Qwen3.5-9B执行权限管控与操作审计 1. 为什么需要OpenClaw安全防护 上周我在调试一个自动整理财务报表的OpenClaw任务时,差点酿成大祸。当时AI助手误将包含客户隐私的临时文件同步到了公开目录,幸亏我提前配置了文件操作审…...

基于Uniapp + SpringBoot + Vue的智能停车场管理系统(角色:用户、员工、管理员)

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 💛博主介绍&#…...

在PHP中处理字符串连接和插值的多种方法

一、字符串连接方法1. 点号运算符(.)语法:通过.连接字符串或变量。示例:123$str1 "Hello";$str2 "World";echo $str1 . " " . $str2; // 输出 "Hello World"特点:简单直接&…...

PHP获取当前IP地址的方法

想象一下,你在寄信时需要填写收件人的地址(IP 地址)。在 PHP 中,我们可以通过读取 HTTP 请求中的信息来获取用户的 IP 地址。(1) 获取 IP 的方法$_SERVER 超全局变量:$_SERVER[REMOTE_ADDR]:直接获取客户端…...

PHP序列化数据格式的示例详解

PHP序列化是将PHP变量(包括对象)转换为可存储或传输的字符串表示形式的过程。了解这些序列化格式对于数据处理、调试和安全性分析非常重要。本文将详细介绍PHP中各种数据类型的序列化表示方式。基本数据类型序列化格式布尔值(Boolean&#xf…...

PHP短信发送功能的实现与优化指南

在现代Web应用中,短信通知是用户认证、营销推送和安全预警的重要渠道。本文将深入解析一个PHP短信发送函数的实现原理,并通过代码优化展示如何提升其安全性、可靠性和性能。核心实现原理短信发送的基本原理是通过HTTP请求调用第三方短信服务API。以下是一…...

macOS上OpenClaw排错指南:Qwen2.5-VL-7B连接失败解决方案

macOS上OpenClaw排错指南:Qwen2.5-VL-7B连接失败解决方案 1. 问题背景与现象描述 上周我在自己的MacBook Pro(M1芯片,macOS Ventura 13.5)上尝试部署OpenClaw并连接本地运行的Qwen2.5-VL-7B模型时,遭遇了一系列连接问…...

OpenClaw备份自动化:用SecGPT-14B识别关键数据并同步加密

OpenClaw备份自动化:用SecGPT-14B识别关键数据并同步加密 1. 为什么需要智能备份系统 作为一个长期在本地开发项目的程序员,我经历过太多次"误删文件后追悔莫及"的时刻。传统的定时全量备份虽然简单,但存在三个致命问题&#xff…...

LeetCode(16/100)

灵神的方法,采用教室坐座位类比,将在1~n范围的数排到他们应在的位置,然后分为都在自己的位置上和有位置没人坐的情况遍历找出缺失的第一个正数。非常形象容易理解,时间效率最优。 class Solution {public int firstMissingPositiv…...

LeetCode(15/100)

数组中除当前数外所有数乘积。不许用除法,时间复杂度O(N),左右指针求前缀乘积和后缀乘积,还能u空间。 class Solution {public int[] productExceptSelf(int[] nums) {int len nums.length;// L 和 R 分别表示左右两侧的乘积列表int[] L ne…...

2024丨时间序列预测(Time Series Prediction)前沿技术解析与论文精要

1. 2024年时间序列预测技术全景图 时间序列预测就像给数据装上"时光望远镜",让我们能够窥见未来的趋势和变化。从股票价格到天气变化,从设备故障预警到疫情传播预测,这项技术正在深刻改变各行各业的决策方式。2024年,这…...

避坑指南:YOLOv5单目测距项目里,为什么你的距离值总是不准?

YOLOv5单目测距实战:五大误差源深度解析与精准优化方案 当你兴奋地跑通了YOLOv5单目测距代码,却发现测量结果与实际距离相差甚远时,这种挫败感我深有体会。本文将带你系统排查那些容易被忽视的关键误差源,并提供可直接落地的解决方…...

手把手教你用蓝莲花XSS平台玩转CTFHub Web XSS题目

蓝莲花XSS平台实战指南:攻克CTFHub Web安全挑战 在网络安全竞赛和实战演练中,跨站脚本攻击(XSS)始终是Web安全领域的重要考点。不同于传统的漏洞利用,XSS攻击需要建立有效的数据回传机制,这对CTF选手提出了更高要求。蓝莲花(BLUE-…...

手把手教你复现ownCloud高危漏洞CVE-2023-49103:从环境搭建到信息泄露验证

从零构建ownCloud漏洞靶场:CVE-2023-49103深度复现指南 当开源云存储系统ownCloud的graphapi组件暴露出PHP环境信息时,意味着什么?想象一下,攻击者通过一个未公开的URL路径,就能获取数据库密码、邮件服务器凭证甚至加密…...

从漏洞复现到修复:手把手教你用ModHeader测试和防御HTTP Host头攻击

HTTP Host头攻击实战:从漏洞复现到Nginx防御全解析 当你在浏览器地址栏输入一个网址时,很少有人会注意到背后那个看似普通的Host头字段。正是这个不起眼的HTTP头部,却可能成为攻击者撬开系统大门的杠杆。想象一下,攻击者只需修改这…...

给STM32L5和LPC55S6x加把锁:手把手配置ARMv8-M TrustZone的SAU与内存分区

给STM32L5和LPC55S6x加把锁:手把手配置ARMv8-M TrustZone的SAU与内存分区 在物联网设备爆炸式增长的今天,安全已经从"可有可无"变成了"必不可少"。想象一下,你设计的智能门锁固件被轻易破解,或者医疗设备的敏…...

OpenClaw配置优化:Qwen2.5-VL-7B任务执行的3个性能技巧

OpenClaw配置优化:Qwen2.5-VL-7B任务执行的3个性能技巧 1. 为什么需要优化OpenClaw的多模态任务性能 上周我尝试用OpenClaw自动处理一批图文混合的电商产品描述,结果发现简单的20条数据竟然花了47分钟。看着日志里频繁出现的"Waiting for model r…...

OpenClaw安全加固:Qwen3-14B镜像操作权限精细控制方案

OpenClaw安全加固:Qwen3-14B镜像操作权限精细控制方案 1. 为什么需要安全加固? 去年我在尝试用OpenClaw自动整理财务报告时,差点酿成大错——脚本误删了原始Excel文件。这次经历让我意识到:当AI能直接操作系统时,安全…...

Si7021温湿度传感器I²C驱动开发与FreeRTOS工程实践

1. Si7021温湿度传感器驱动库深度解析与工程实践Si7021是由Silicon Labs(芯科科技)推出的一款高精度、低功耗数字式温湿度传感器,采用CMOS工艺集成电容式湿度传感单元与带隙温度传感单元,通过IC接口输出经过校准的12位湿度和14位温…...

嵌入式代码阅读方法论:从新手到高效能工程师

1. 嵌入式代码阅读方法论:从新手到高效能工程师的进阶之路刚接触嵌入式开发的新人常会遇到这样的困境:打开一个项目代码库,面对成千上万行代码和复杂的模块关系,完全不知从何入手。作为一名在嵌入式领域摸爬滚打多年的工程师&…...

Jupyter Notebook机器学习避坑指南:为什么你的泰坦尼克号预测模型准确率虚高?

Jupyter Notebook机器学习避坑指南:为什么你的泰坦尼克号预测模型准确率虚高? 在数据科学竞赛和实际业务场景中,泰坦尼克号数据集堪称机器学习界的"Hello World"。但正是这个看似简单的数据集,却暗藏诸多陷阱。许多学习…...

神经结构搜索(NAS)编码策略解析:从邻接矩阵到路径优化的实战指南

1. 神经结构搜索(NAS)编码策略入门指南 第一次接触神经结构搜索(NAS)时,我被那些晦涩的术语搞得一头雾水。直到在真实项目中踩过几次坑才明白,编码策略的选择直接影响着整个搜索过程的效率。简单来说,NAS编码就像给神经网络结构设计"身份…...

OpenClaw+百川2-13B-4bits量化模型:个人知识管理自动化方案

OpenClaw百川2-13B-4bits量化模型:个人知识管理自动化方案 1. 为什么需要自动化知识管理 作为一个长期与技术文档打交道的开发者,我的知识库在过去三年膨胀到了2000篇杂乱无章的Markdown文件。每次查找资料时,要么记不清文件名,…...

OpenClaw会议小助手:Qwen3.5-9B实时转录与待办项提取

OpenClaw会议小助手:Qwen3.5-9B实时转录与待办项提取 1. 为什么需要会议自动化助手 作为经常参加跨时区会议的技术从业者,我长期被两个问题困扰:一是会议录音整理耗时耗力,二是行动项经常在后续执行中被遗漏。传统解决方案要么需…...

OpenClaw技能组合:千问3.5-35B-A3B-FP8驱动的自动化工作流设计

OpenClaw技能组合:千问3.5-35B-A3B-FP8驱动的自动化工作流设计 1. 从零到一的自动化工作流实践 去年夏天,我接手了一个临时项目:需要每天处理上百封客户邮件,提取会议需求并安排日程,会后还要生成纪要同步给团队。手…...