交叉编译 openocd

1. openocd 是什么

​ openocd 是一个运行在 pc 机上开源的嵌入式调试软件,几乎统一了各大主流调试器,如 st-link、jlinlk、daplink 等等,一般芯片厂商都会原生选择 openocd 作为自己芯片的调试软件,然后配合自己芯片的调试器做到对芯片的调试能力。

2. 背景

​ 一般的开源项目都是在 linux 环境下开发的,可以在 linux 环境下安装相关依赖后,直接从源码编译为可执行文件使用,linux 的可执行文件为 elf 格式,而 windows 为 exe,这对 windows 环境就很不友好了,如果项目中需要修改源码,并且想在 windows 环境下使用,就必须使用 linux 的环境来编译出能在 windows 环境下使用的可执行文件 exe。

3. 可行性

​ 以上需求可通过 windows 环境下安装 Msys2 来在 win 下模拟一个 linux 环境,通过 Msys2 下的 pacman 工具可以很方便的安装各种依赖工具。也可以直接在 linux 环境下交叉编译出 exe。本文章采用后者,在 linux 下编译出 windows 版本的 openocd。通过这样的方式,让我们对开源软件以及 linux 环境进一步的理解。

4. 环境搭建

  1. 由于需要在 linux 上编译出能在 windows 环境下运行的软件,那么交叉编译工具链是必不可少的。由于 windows 下的集成开发环境已经帮我们做好了项目管理,通过点击按钮就能一键编译,而 linux 下则需要使用各种工具来构建整个项目,相关工具使用以下命令安装即可:
    apt-get install -y make
    apt-get install -y autoconf
    apt-get install -y pkg-config
    apt-get install -y automake
    apt-get install -y texinfo
    apt-get install -y mingw-w64
    apt-get install -y libtool
    
  2. 拉取源码
    由于 openocd 是运行在 pc 上的软件,想要与调试器通信,必须使用物理导线与 pc 连接,一般使用 usb 线,因此 openocd 需要依赖 usb 相关源码
    git clone https://github.com/openocd-org/openocd.git //拉取 openocd 源码
    git clone https://github.com/libusb/libusb.git // 拉取 libusb 源码
    git clone https://github.com/libusb/hidapi.git // 拉取 hidapi 源码
    

5. 交叉编译源码

  1. 交叉编译 libusb

    mkdir /usr/local/my_app/libusb
    ./bootstrap.sh
    ./configure --prefix=/usr/local/my_app/libusb --host=i686-w64-mingw32
    make -j4
    sudo make install 
    

    可以通过 ./configure 文件根据输入的参数生成 makefile,在这一步骤指定软件的编译环境、运行环境。通过 ./configure --help 查看配置项信息,如下:请添加图片描述
    这是我们需要关心的配置项,这里设置为安装的交叉编译工具链前缀 i686-w64-mingw32,在生成 Makefile 中会将编译器换为指定的编译器,如下请添加图片描述
    上述成功后可到 /usr/local/my_app/libusb/bin 中查看 windows 下的 usb 动态库文件 .dll

  2. 交叉编译 hidapi

    同上即可

  3. 交叉编译 openocd

    导出环境变量,仅在当前 shell 中有效
    export LIBUSB1_CFLAGS="$LIBUSB1_CFLAGS -I/usr/local/libusb/include/libusb-1.0"
    export LIBUSB1_LIBS="$LIBUSB1_LIBS -L/usr/local/libusb/lib -lusb-1.0"
    export HIDAPI_CFLAGS="$HIDAPI_CFLAGS -I/usr/local/hidapi/include/hidapi"
    export HIDAPI_LIBS="$HIDAPI_LIBS -L/usr/local/hidapi/lib -lhidapi"
    
    ./bootstrap
    mkdir /usr/local/my_app/openocd_win
    ./configure --enable-stlink --enable-jlink --enable-cmsis-dap --enable-cmsis-dap-v2 --prefix=/usr/local/openocd/ --host=i686-w64-mingw32 // 配置参数
    make -j4
    sudo make install
    

    同样 输入 ./configure --help 查看配置项,将上述 4个 路径导出到环境变量的目的是为了将这些路径添加到在生成的 Makefile 中,同样可通过如下配置项中选择:请添加图片描述
    ./configure 之后,可以查看 makefile 是否配成了想要的配置,先查看编译工具链是否配置正确,如下:请添加图片描述
    然后,查找 usb 库路径是否是我们交叉编译出来的路径,如下:请添加图片描述
    然后执行 make -j4、sudo make install 安装即可

6. 验证

  1. 进入到 openocd 安装目录的 bin 文件下,可以看到成功生成了 exe,如下:请添加图片描述
    ​ 可以看出,确实是 windows 环境下的软件。将 usb 动态库与 openocd 拿到 win 环境下即可,在 powershell 中执行该软件:请添加图片描述
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值