linux设备树参数自定义
时间: 2025-05-28 15:13:53 浏览: 15
### 自定义 Linux 设备树 (Device Tree) 参数
#### 修改 DTS 文件以添加自定义参数
为了向设备树中添加新的参数,需要编辑对应的 `.dts` 文件。假设要为某个外设增加一个新的属性 `custom-param`:
```dts
&i2c1 {
status = "okay";
my_custom_device: customdevice@70 {
compatible = "mycompany,custom-device";
reg = <0x70>;
custom-param = <0xABCD>; // 添加自定义参数
};
};
```
上述代码片段展示了如何在一个 I2C 总线下的特定地址处定义带有额外属性的新设备节点[^3]。
#### 编写相应的驱动程序来解析这些新参数
当硬件平台初始化时,内核会读取并解释设备树中的数据。对于新增加的字段,在关联的驱动模块里可以通过访问 `struct device_node *np` 来获取它们,并将其转换成可操作的形式供后续逻辑使用:
```c
static int __init my_driver_probe(struct platform_device *pdev)
{
struct device_node *node;
u32 value;
node = pdev->dev.of_node;
of_property_read_u32(node, "custom-param", &value);
printk(KERN_INFO "Custom parameter is %u\n", value);
}
```
这段 C 语言代码示范了怎样通过 OF(Open Firmware)API 函数从设备节点对象中提取之前设置好的整数型自定义参数[^4]。
#### 更新 U-Boot 或者 GRUB 中的 chosen 节点
如果希望某些全局性的配置项能够在早期引导阶段生效,则可以在 U-Boot 设置期间修改 `/chosen` 下的相关条目。例如更改默认串口波特率或指定根文件系统的挂载位置等:
```dts
/chosen {
bootargs = "console=ttyS0,9600n8 root=/dev/sda1 rw debug earlyprintk";
};
```
此处调整了控制台输出速率至 9600bps 并指定了不同的存储介质作为启动盘[^2]。
阅读全文
相关推荐


















