不要修改dtsi,修改自己板子的dts,通过 &label 语句修改子文件里已经存在的节点

本文介绍DTS(Device Tree Source)中OF(Open Firmware)设备节点的配置方法,特别是如何在不修改基本模板文件的情况下,为特定硬件平台(如imx6q)配置I2C从设备。

原文:http://blog.youkuaiyun.com/ruanjianruanjianruan/article/details/61624510
dts里的of_device节点的属性都是分开写的,这样是为了降低耦合,比如imx6q的i2c的节点,它的compatible 属性是放在最经常被包含的imx6qdl.dtsi文件中的,如:

i2c1: i2c@021a0000 {
   #address-cells = <1>;
   #size-cells = <0>;
   compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c";
   reg = <0x021a0000 0x4000>;
   interrupts = <0 36 0x04>;
   clocks = <&clks 125>;
   status = "disabled";
};

而自己的板子上挂了i2c slave芯片,那么针对自己的板子的dts文件里添加这个子节点,而不是在最初的imx6qdl.dtsi文件中。

在自己板子的dts文件中添加方法是:

&i2c1 {
   clock-frequency = <100000>;
   pinctrl-names = "default";
   pinctrl-0 = <&pinctrl_i2c1_2>;
   status = "okay";

   eeprom0:qom,eeprom@2b{
      .....
      .....
   }
};

这样,原来经常被包含的文件dtsi就不用被改动了。
1,如果有相同的属性,根据语句的先后顺序,则后者会把前者的属性覆盖掉。
2,其中 i2c1 是一个标签,&i2c1 操作就表示设备节点 i2c@021a0000 的地址,表示的是对 i2c@021a0000 的操作。

<think>好的,我现在需要帮助用户解决如何修改dtsi文件中的供电参数并查看prode流程的问题。首先,我需要理解用户的具体需求。他们可能是在进行嵌入式系统开发,特别是使用设备树(Device Tree)配置硬件参数,比如供电相关的设置。用户提到的“prode”可能是拼写错误,可能指的是“probe”,即设备驱动探测过程,或者是某个特定工具或流程。 接下来,我需要回忆设备树DTS/DTSI)的基本知识。设备树文件用于描述硬件配置,DTSI是包含文件,通常用于通用配置,而具体的板级配置在DTS文件中覆盖或补充。根据引用内容,用户应该优先修改DTS文件而不是DTSI,以保持通用性。例如,引用[1]提到应优先修改DTS文件,覆盖节点实现定制;引用[2]说明DTSI用于提取相同部分,不同部分放在独立文件;引用[3]则指出无法通过某个DTSI修改另一个DTSI的问题,这可能涉及包含顺序或节点覆盖的问题。 用户的问题分为两部分:修改供电参数和查看prode流程。首先,供电参数可能位于设备树的某个节点下,例如电源管理单元(PMU)或特定设备的regulator节点。需要找到对应的节点修改电压、电流等属性。步骤可能包括定位相关节点修改属性、编译设备树,并更新到系统中。 然后是查看probe流程。设备驱动在匹配到设备树中的节点时会执行probe函数,这可能需要通过内核日志来确认。用户可能需要使用dmesg或查看/var/log/messages,检查驱动加载时的日志,确认供电参数是否生效,或者是否有错误发生。 需要注意的是,修改DTSI文件可能不被推荐,应该通过板级DTS文件进行覆盖。例如,引用[1]建议优先修改DTS文件,保持DTSI的通用性。因此,在指导步骤中应强调这一点,避免用户直接修改DTSI导致维护问题。 另外,用户可能遇到无法覆盖的问题,如引用[3]中的情况,可能需要检查包含顺序或节点路径是否正确。例如,如果修改节点DTSI中被后续的DTS文件覆盖,可能需要调整包含顺序或使用更具体的节点定义。 总结步骤应该是:1. 定位供电参数的节点;2.DTS文件中覆盖该节点;3. 编译设备树;4. 更新并重启系统;5. 检查内核日志确认probe结果。 同时,生成相关问题时,需要考虑用户可能进一步的问题,比如如何调试设备树、常见错误有哪些、如何确认参数已生效等。</think>### 修改dtsi文件供电参数并查看probe流程的步骤 #### 一、修改dtsi文件中的供电参数 1. **定位供电参数节点** 在设备树(`.dtsi`或`.dts`)中查找与供电相关的节点,例如: - 电源管理单元(PMU)节点 - 电压调节器(regulator)节点 - 设备供电属性(如`regulator-microvolt`、`vin-supply`) 示例节点结构: ```dts &pmu { regulator@1 { regulator-name = "vdd_core"; regulator-min-microvolt = <900000>; regulator-max-microvolt = <1350000>; }; }; ``` 2. **覆盖或新增节点** - **优先在板级`.dts`文件修改**(遵循引用[1]建议),通过`/delete-node/`或覆盖属性实现: ```dts /* 在system-user.dts中覆盖原参数 */ &regulator@1 { regulator-min-microvolt = <950000>; }; ``` - 避免直接修改芯片级`.dtsi`文件以保持通用性[^1][^2]。 3. **编译设备树** 使用`dtc`工具编译生成`.dtb`文件: ```bash dtc -I dts -O dtb -o output.dtb input.dts ``` 4. **更新设备树并重启系统** 将生成的`.dtb`文件部署到目标系统的启动分区(如`/boot`),并重启系统。 --- #### 二、查看设备驱动的Probe流程 1. **检查内核日志** 设备驱动成功匹配到设备树节点时,会触发`probe`函数。通过以下命令查看日志: ```bash dmesg | grep "regulator" # 按关键字过滤 dmesg | grep "probe" # 查看驱动探测记录 ``` 2. **验证供电参数生效** - 通过sysfs查看实时参数(需驱动支持): ```bash cat /sys/class/regulator/regulator.0/microvolts ``` - 使用调试工具(如`devmem2`)直接读取硬件寄存器值。 3. **常见问题排查** - **节点未生效**:检查设备树编译是否包含修改后的文件,确认节点路径正确[^3]。 - **驱动未加载**:确保驱动已编译进内核或作为模块加载(`lsmod | grep <驱动名>`)。 --- #### 三、注意事项 1. **优先使用板级DTS文件**:避免直接修改芯片级`.dtsi`文件,确保代码可维护性[^1][^2]。 2. **记录修改原因**:对任何`.dtsi`文件修改需明确注释,便于后续维护[^1]。 3. **调试工具推荐**: - `dtc -I fs /sys/firmware/devicetree/base`:查看运行时设备树结构。 - `udevadm monitor`:实时监控设备插拔事件。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值