Yocto — 1 исходный код, 3 исправления, 3 разных выходных файла

#yocto #patch #bitbake #dts

Вопрос:

Я не гуру Йокто, и я действительно не понимаю всех фоновых и закулисных действий. Но я уверен, что мою идею можно реализовать.

Позвольте мне объяснить:

  • У меня есть файл DTS для управления уровнями подсветки дисплея LVDS и всеми процессорами GPIO и т. Д…
  • Исходный файл предоставлен поставщиком процессора SMARTC (cpu.dts)
  • У меня есть 3 100% разных уровня кандел для тестирования. Почему? приложение, управляющее подсветкой, установит ее на 100%, и на данный момент мы не хотим изменять поведение приложения, но нам нужны 3 регулируемых уровня.
  • Я произвел математические расчеты, чтобы установить отображение подсветки для установки в файл DTS для каждого значения кандел для 3 максимальных уровней (200, 300, 500), что легко сделать.

что я сделал:

  1. Я создал свои файлы 3 .patch с соответствующими изменениями, используя git format-patch …
  2. В папке «Файлы мета-рецептов» я добавил 3 файла исправлений
  3. В моем рецепте bbappend я установил файл://xxxx-200-candelas.patch
  4. Я перекомпилировал (bitbake …), нашел новый сгенерированный dtb в рабочих папках*
  5. Разкомпилируйте dtb, чтобы убедиться, что он содержит соответствующие изменения (dtb dtc-I….), новые значения здесь
  6. Вручную, Я:
  • скопируйте и переименуйте новый файл cpu.dtb в cpu-200-candelas.dtb
  • смонтируйте загрузочный раздел из final .wic (сделано только один раз)
  • скопируйте файл в FS
  • выполните цикл в точке #3, чтобы изменить файл исправления и перезапустить компиляцию

Хорошо, как только это будет сделано, все будет сделано. Но каждый раз, когда я адаптирую что-то в другие разделы dts, мне приходится перестраивать 3 файла, поэтому мой подход не очень хорош. Это работает, но это расстраивает, потому что, если я изменю другое значение в другие разделы, я застряну, и мне придется перезапустить все для 1 измененного значения.

Итак, в конце, через 40 минут, у меня есть 4 файла с именами: cpu.dtb, cpu-200-candelas.dtb, cpu-300-candelas.dtb, cpu-500-candelas.dtb. Я написал небольшой сценарий для баша «set-max-candelas.sh $1» и этот скрипт принимает значение канделябра в 1 доллар, удаляет cpu.dtb, копирует нужный dtb канделябра в cpu.dtb, перезагружается, и все готово.

Я уверен, что могу сделать что-то лучше, чем это, сгенерировав мои 3 файла dtbs и автоматически поместив их в загрузочный раздел wic без моих «человеческих» действий, но я не знаю, не понимаю, с чего и как начать, кроме как выполнить сценарий, который будет циклически, удалит мой файл bbappend и перезапустит компиляцию, чтобы сгенерировать 3 файла, но добавление в файл wic все равно будет ручным.

Есть какие-нибудь идеи, процессы, примеры, опыт? Любая помощь будет оценена по достоинству.

С уважением,