gpt4 book ai didi

c - C中通过设备树文件获取设备地址

转载 作者:行者123 更新时间:2023-11-30 17:13:54 26 4
gpt4 key购买 nike

我正在 Linux 上工作;当Linux启动时DTS(设备树),该文件将由Linux内核加载。

我的问题是,有没有办法使用C语言通过DTS文件获取设备地址?

例如:

DTS 文件的某些部分如下:

soc@ffe00000{
.......
i2c@112000{
.......
}
}

我想获取设备名称(soc,i2c),和地址(ffe00000,112000)...

最佳答案

<小时/>

嗨,CK vir,

你的问题不太清楚。我假设您正在寻找某种函数,该函数将 dts 文件的内容作为参数并返回一堆(设备,地址)对。这是正确的吗?

此外,如果您告诉我们您正在使用哪种设备,这将会很有用。是树莓派吗?黑色小猎犬?还是一台完整的台式电脑?您使用什么发行版和版本的 Linux?

这可能不完全是您正在寻找的内容,但不久前,我使用了一个不错的库发布 here on github 。例如,要获取名为“ethernet”的设备的地址,您可以执行以下操作。

int err = dtree_open("/proc/device-tree");
if(err != 0)
{
printf("failed to open device tree\n");
exit(1);
}

struct dtree_dev_t *eth = dtree_byname("ethernet");
if(eth == 0)
{
printf("failed to find device named \"ethernet\"\n");
exit(1);
}

//print the base address of the ethernet hardware
printf("base address of ethernet is %i\n", eth->base);

dtree_dev_free(eth);

dtree_close();

我希望这个库对你和我一样有用。

如果这没有帮助,那么用 C 实现 dts 解析器是一项微不足道的任务。dts 的“语言”并不是非常复杂。有关语法的许多详细信息可以在 here 中找到。 .

最好,约翰

关于c - C中通过设备树文件获取设备地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com