Настройка параметров пользовательского рецепта с машины в yocto - PullRequest
1 голос
/ 08 мая 2020

Мы создаем систему на основе poky / oe для работы на нескольких различных версиях платы, которые имеют некоторые незначительные отличия. Одним из примеров является то, что выводы SWD / JTAG IO различаются между платами.

Я хотел бы иметь возможность настраивать эти выводы для каждой машины, что в основном дает ответ на этот вопрос .

Однако я бы предпочел иметь возможность устанавливать эти параметры с машины , чем настраивать конфигурацию каждой машины в рецепте. Т.е. id хотел бы иметь возможность делать что-то вроде этого:

# /conf/machine/my_machine_v1.conf
OPENOCD_SWCLK_PIN = "25"
OPENOCD_SWDIO_PIN = "24"
OPENOCD_SRST_PIN  = "23"

А потом что-то вроде этого в моем рецепте, который устанавливает файл конфигурации openocd:

SWCLK_PIN = ".... get machine config SWCLK_PIN ..."

et c .

Это позволит мне не изменять рецепт для каждой новой машины. Возможно ли это?

1 Ответ

0 голосов
/ 11 мая 2020

Любые переменные, заданные в файлах .conf, являются глобальными, т.е. доступны во всех рецептах. Таким образом, переменную можно просто прочитать из рецепта, используя ${OPENOCD_SWCLK_PIN}

Что меня застало врасплох, так это то, что bitbake расширяет переменные во встроенных сценариях оболочки вместо того, чтобы устанавливать их в среде, а bitbake требует фигурных скобок в ${XXX}.

do_install() {
  # echo "$OPENOCD_SWCLK_PIN" >> ${D}/some_file.cfg # WONT WORK
  echo "${OPENOCD_SWCLK_PIN}" >> ${D}/some_file.cfg # Works,
  # OPENOCD_CWCLK_PIN can be set in the recipe file, distro.conf or machine.conf etc.
}

Спасибо paulbarker на ir c за объяснение проблемы.

...