首页 > 解决方案 > 运行 openocd 的 bitbake 任务

问题描述

我想为允许我运行 openocd 以连接到我的开发板的配方(或独立配方,如果需要)设置一个任务。

我有一个 openocd 原生食谱。

我创建了一个添加到我的食谱中的任务,如下所示:

do_openocd[depends] += "openocd-native:do_populate_sysroot"
addtask openocd after do_image
do_openocd () {
  echo "The thing is ${datadir_native}/openocd"
  echo $(ls -la ${datadir_native}/openocd/scripts/interface)
  echo $(openocd -v)
  echo $(which openocd)
  openocd -f ${datadir_native}/openocd/scripts/interface/altera-usb-blaster2.cfg
}

这会按照我的预期在构建系统 sysroot 中运行 openocd。但是,我无法让我的任务在我的构建系统 sysroot 中使用 usr/share。它只是看起来/usr/share/blablabla好像构建系统 sysroot 不存在。

altera-usb-blaster2.cfg中不存在usr/share/openocd/scripts/interface/,但确实存在于 中./tmp/sysroots/x86_64-linux/usr/share/openocd/scripts/interface/。(相对于我的构建文件夹)

如何设置我的任务来运行 openocd?

标签: yoctobitbakeopenocd

解决方案


我找到了解决方案。

我在我的 openocd-native 配方中创建了一个 python 任务。对于我的特定板,我在脚本/目标文件夹中创建了一个修改过的文件。

addtask openocd after do_install
python do_openocd () {
  pathdir = d.getVar("datadir", True)
  comand="openocd -f %s/openocd/scripts/interface/altera-usb-blaster2.cfg -f 
%s/openocd/scripts/target/cyclone.cfg" % (pathdir, pathdir)
  oe_terminal("${SHELL} -c \"%s; if [ \$? -ne 0 ]; then echo 'Command failed.'; 
printf 'Press any key to continue... '; read r; fi\"" % comand, 'Running openocd', d)
}

推荐阅读