Jump to content

    
Sign in to follow this  
Tarbal

Как дать имя новому устройству

Recommended Posts

В Линуксе многие вещи очевидны для тех кто с ними разобрался. Однако для остальных бывает непросто отыскать информацию.

Я хочу рассказать о том как давать имя новому устройству.

 

Сначала надо зрегистрировать новое устройство здесь:

http://www.arm.linux.org.uk/developer/machines/

 

В самом верху страницы есть две ссылки. По одной регистрация, по второй создание файла, который надо записать вместо имеющегося arch/arm/tools/mach-types

 

Следующим шагом постройте кернел и скопируйте генерируемый файл

include/generated/mach-types.h вместо одноименного в u-boot.

 

В файле борда поменяйте (если скопировали с другого борда) директиву:

MACHINE_START

 

Например вы взяли за основу Freescale MX53 LOCO Board. Она зарегистрирована под идентификационным номером MX53_LOCO.

Значит

MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board")

Надо поменять на

MACHINE_START(NEW_NAME, "Freescale MX53 New_Name Board")

 

Обязательно сделать аналогичную замену в бут лоадере иначе кернел будет отвергаться.

Я не помню где это делается, но если не сможете найти, то я найду и напишу где и что поменять.

 

Постройте кернел и у-бут заново.

Все готово.

 

Share this post


Link to post
Share on other sites
Никакого. Равно как и умываться по утрам и мыть ноги на ночь.

 

Раньше был хоть какой-то смысл но сейчас и правда никакого - достаточно указать с каким процессором совместима машина в dts

 

/include/ "imx53.dtsi"

 

/ {

model = "i.mx53 starterkit";

compatible = "sk,imx53-sk", "fsl,imx53";

 

memory {

reg = <0x70000000 0x20000000>; /* Up to 512MB */

};

...

Edited by sasamy

Share this post


Link to post
Share on other sites
Раньше был хоть какой-то смысл но сейчас и правда никакого - достаточно указать с каким процессором совместима машина в dts

 

А как отличить один борд от другого?

В кернеле 3.13 для beagle все без изменений:

http://lxr.free-electrons.com/source/arch/...d-omap3beagle.c

 

Share this post


Link to post
Share on other sites
А как отличить один борд от другого?

В кернеле 3.13 для beagle все без изменений:

 

Зачем их отличать ? Вы загружаете конфигурацию от конкретного устройства для ядра - других у него не будет, а то что вы привели это legacy - просто в техасе все еще кипятят :)

Edited by sasamy

Share this post


Link to post
Share on other sites
Зачем их отличать ? Вы загружаете конфигурацию от конкретного устройства для ядра - других у него не будет, а то что вы привели это legacy - просто в техасе все еще кипятят :)

Конкретное устройство это процессор или борд?

Share this post


Link to post
Share on other sites
Конкретное устройство это процессор или борд?

 

Конкретное устройство - это изделие на базе процессора - хоть борд, хоть планшет, хоть телепон :) вот эта вот ерунда

 

http://lxr.free-electrons.com/source/arch/...p3beagle.c#L156

 

должна быть описана в DTS конкретной борды, а не в общем board-файле и тогда не надо опрашивать никакие GPIO потому что вы и так знаете для какой из них пишете DTS. Потом эта конфигурация компилируется специальным компилятором и получается бинарник который вы передаете ядру при загрузке. Производитель процессора или те кто делал порт Linux описывает общую конфигурацию SoC а вы просто включаете ее в свой DTS через include

http://lxr.free-electrons.com/source/arch/.../dts/imx53.dtsi

 

и дописываете только свои специфичные особенности

http://lxr.free-electrons.com/source/arch/...-mba53.dts#L154

 

или изменяете значения по умолчанию - например контроллер по умолчанию отключен а вы указываете чтобы он был включен

http://lxr.free-electrons.com/source/arch/...-mba53.dts#L182

 

глубина вложенности может быть любой - например вы для биглей можете сделать дополнительный общий инклуд

http://lxr.free-electrons.com/source/arch/...x53-tqma53.dtsi

 

и для конкретных борд в конечном счете в текстовом виде получатся простейшие и понятные конфигурации

http://lxr.free-electrons.com/source/arch/...imx53-mba53.dts

Edited by sasamy

Share this post


Link to post
Share on other sites
Конкретное устройство - это изделие на базе процессора - хоть борд, хоть планшет, хоть телепон :) вот эта вот ерунда

 

http://lxr.free-electrons.com/source/arch/...p3beagle.c#L156

 

должна быть описана в DTS конкретной борды, а не в общем board-файле и тогда не надо опрашивать никакие GPIO потому что вы и так знаете для какой из них пишете DTS. Потом эта конфигурация компилируется специальным компилятором и получается бинарник который вы передаете ядру при загрузке. Производитель процессора или те кто делал порт Linux описывает общую конфигурацию SoC а вы просто включаете ее в свой DTS через include

http://lxr.free-electrons.com/source/arch/.../dts/imx53.dtsi

 

и дописываете только свои специфичные особенности

http://lxr.free-electrons.com/source/arch/...-mba53.dts#L154

 

или изменяете значения по умолчанию - например контроллер по умолчанию отключен а вы указываете чтобы он был включен

http://lxr.free-electrons.com/source/arch/...-mba53.dts#L182

 

глубина вложенности может быть любой - например вы для биглей можете сделать дополнительный общий инклуд

http://lxr.free-electrons.com/source/arch/...x53-tqma53.dtsi

 

и для конкретных борд в конечном счете в текстовом виде получатся простейшие и понятные конфигурации

http://lxr.free-electrons.com/source/arch/...imx53-mba53.dts

 

Спасибо. Мне к сожалению еще несколько месяцев не светит перейти на новую концепцию.

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this