Pull to refresh

Comments 24

Спасибо за серию статей!
Еще бы кто-нибудь сделал серию по формированию файла Device Tree с глубоким погружением, цены бы такому человеку не было бы…
А что конкретно в Device Tree вас интересует? Что именно непонятно?
Ну вот мы разрабатываем свою плату. Берем в правую руку даташит на процессор и периферию, в левую руку клавиатуру и файл с Device Tree. Что дальше? С чего начать описание? Как правильно мапить адреса, прерывания, регистры...? Если я чего-то не замапил — ядро этого не увидит? Или увидит но будет криво работать? В чем отличие Device Tree для ядра от Device Tree в моем флеше (почему-то по гайду от производителя их надо 2 — один для bootloader второй для ядра)?

Короче говоря, хотелось бы ликбез какой-то с чего начинаем, какие параметры вписываем, как оно взаимодействует с ядром. Есть несколько источников в сети на elinux где кое-что описано, но общего понимания всего равно нет…

Добавлю: сейчас наш процесс создания такого файла — это метод проб и ошибок, бессистемный.
Я вас понял. Да такую статью я бы и сам почитал :-D.
Ну вот… Я уж губу раскатал думал нашел такого человека, который все расскажет :D
А это сильно зависит от процессора. Для начала можно поизучать уже имеющиеся. dtsi и. dts от других плат. И может понадобиться также и схема самой платы (например, для правильного описания gpio, pinctrl и led'ов)
Ну вот мы так и идем, даже демо плату купили… Только это как-то кустарно выглядит как способ разработки…
Так большинство, по-моему, идет. На самом деле если глянуть, то все SoM, SoC в большинстве своем калька с Evaluation Board.
Не так уж много делают новых плат — да и зачем.
Ответ на вопрос «зачем?» может занять много места :) Есть куча факторов, почему не стоит ИМХО делать кальку с Demo Board (начиная от выбора компонентов, заканчивая ошибками в разведении и недоступностью фич на камне). Поэтому для заказчика часто приходится делать что-то свое, иногда нестандартное.

Взять к примеру HDMI — его щас лепят на все демо платы. Проблема с ним в том, что начиная с определенного времени надо заносить денюжку организации, которая владеет стандартом (неслабую надо отметить). Без лицензии тебе не продадут мост LVDS-HDMI. Есть запасы старых чипов, которые не требуют лицензии, но на серьезном серийном производстве полагаться на запасы нельзя (они имеют свойство заканчиваться). При этом на наш чип «православных» Display Port выходов никто не делал. Вот и приходится заниматься этой разработкой вслепую, методом проб и ошибок…
Ну вот тогда вам и флаг в руки :-D со статьёй. В моей практике не так часто приходится, что-то принципиально новое разводить.
Да, я вот и чувствую по формату беседы, что к этому и идет :D
Но вообще говоря сильно зависит от производителя камня. У texas отличные инструменты для pinmux, NXP тоже догоняет. А вот если плохо с документацией на камень, тогда все очень печально.
Мы стараемся брать компоненты у проверенных компаний с хорошей документацией, только проблема возникает на стыке софта и харда. У нас отличные инженеры, которые все хорошо разведут и классные программисты, которые пишут хороший код. Только вот соединить их навыки из-за отсутствия теоретического материала и практического опыта сейчас крайне тяжело. Много времени уходит просто на анализ существующих драйверов, чтобы «сделать по аналогии» ну и тут же вносятся изменения в схему и консультации с инженерами. Иногда бывают тупики и приходится возвращаться назад.
В общем, жалко что никакого готового материала нет, надо и правда подумать о создании своего…
maquefel подал не плохую мысль.
Действительно, если Вы начнёте писать статью по этой теме, то это даст хороший рост. Объяснить кому-то всегда сложнее, чем взять и сделать.
Я поэтому и начал писать про buildroot. Хорошая систематизация знаний и мозный стимул начать разбираться как следует
Ну вообще да. Просим статью.
Почему кустарно? Пользование текстовым редактором и чтение документации — это уже кустарщина?
Метод проб и ошибок, бессистемный анализ и глупое копирование без понимания сути — это кустарщина.
Почему бессистемный. Выкатывайте вашу плату, на вашей плате сделаем пример создания DT. Практика всегда лучше теории. Только давайте что-нибудь приличное и документированное, типа TI/NXP/Xilinx, от китайцев лучше держаться подальше, у них с документацией традиционно швах.
Спасибо за предложение помощи! :)
Я думаю это уже не в рамках комментариев к хабру надо общаться. Чип у нас Atmel SAMA5D44 на первой итерации, после пробы пера хотим поменять на TI Cortex A-9 (пока еще не выбрали какой конкретно).

Может быть вместо BR2_EXTERNAL_my_tree_PATH имелось ввиду BR2_EXTERNAL ?

По поводу скриптов автоматизации. К сожалению, вам доступны в скриптах далеко не все переменные Buildroot. Вам доступны те переменные, которые вы передадите в скрипт (см. BR2_ROOTFS_POST_SCRIPT_ARGS)
А ещё вам доступны environment variables:

BR2_CONFIG: the path to the Buildroot .config file (полный путь к файлу .config включая имя файла например /home/I/buildroot/.config)
CONFIG_DIR: the directory containing the .config file, and therefore the top-level Buildroot Makefile to use (which is correct for both in-tree and out-of-tree builds)
HOST_DIR, STAGING_DIR, TARGET_DIR: see Section 18.6.2, “generic-package reference”
BUILD_DIR: the directory where packages are extracted and built
BINARIES_DIR: the place where all binary files (aka images) are stored
BASE_DIR: the base output directory

Если вам в вашем скрипте все же нужны другие переменные из файла .config можете попытаться выполнить
source .config
тогда вы сможете загрузить те переменные, полное значение которое прописано в файле .config
Для переменных, которые необходимо вычислить это не сработает. Пример переменной, которая загрузится без проблем
BR2_SFTP="sftp"
Пример переменной, которая не будет загружена
BR2_DL_DIR="$(TOPDIR)/dl"

Добавил в packages Config.in, свой пакет, туда же Config.in и mk-файл, однако нигде не появились мои пакеты
В чем может быть проблема?

Sign up to leave a comment.

Articles