2015-06-01 2 views
0

Я работаю над Linux; когда Linux запустит DTS (дерево устройств), файл будет загружен ядром Linux.Получение адреса устройства по дереву устройств в C

Мой вопрос: есть ли способ получить адрес устройства с помощью файла DTS с помощью C lanugage?

Например:

Некоторая часть файла DTS, как:

[email protected]{ 
    ....... 
    [email protected]{ 
    ....... 
    } 
} 

Я хочу, чтобы получить устройство name(soc,i2c) и address(ffe00000,112000) ...

ответ

0

Привет CK ВИР,

Ваш вопрос не очень ясен. Я предполагаю, что вы ищете какую-то функцию, которая принимает в качестве аргумента содержимое файла 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(); 

Я надеюсь, что эта библиотека так же полезна для вас, как и для меня.

Если это не помогает, тривиальная задача - реализовать парсер dts в C. «Язык» для dts не является ужасно сложным. Несколько подробностей относительно синтаксиса можно найти here.

Бест, Джон

+0

да, это мой вопрос, я постараюсь своей библиотекой, спасибо –

Смежные вопросы