该篇幅介绍如何搭建OpenOCD环境基于Window10+Cygwin?

为何我在windows下使用Cygwin?其原因比较简单本人已经习惯了在Ubuntu环境编程,但是有些工具驱动windows下有Ubuntu下没有或者Ubuntu下安装相应的驱动比较费时间。然而windows下有现成的能使用的驱动。但是windows下没有Linux下的相应的gcc编译器。然而Cygwin就起到了windows和linux之间的桥梁作用。

我们为什么选择OpenOCD?要从什么是OpenOCD开始。

什么是OpenOCD

OpenOCD(Open On-Chip Debugger)开源片上调试器,是一款开源软件,最初是由Dominic Rath同学还在大学期间发起的(2005年)项目。OpenOCD旨在提供针对嵌入式设备的调试、系统编程和边界扫描功能。

OpenOCD的功能是在仿真器Debuger Adapter的辅助下完成的,仿真器是必须的,因为调试主机(运行OpenOCD的主机)通常不具备JTAG/SWD电信号的直接解析功能。仿真器支持一个或多个传输协议,每个协议涉及不同的电信号,且使用不同的协议栈进行消息传递。市面上有很多种仿真器,并且这些仿真器的命名没有统一的规律。例如,JTAG仿真器支持JTAG协议的信号,可以用来进行TAPs和目标板子之间符合JTAG协议(IEEE 1149.1)的通讯。TAP(Test Access Port)是处理特殊指令和数据的单元。TAPs在芯片与板子之间和之内以菊花链的形式进行连接。JTAG支持调试和边界扫描。 还有SWD仿真器,这种仿真器支持使用SWD(Serial Wire Debug)信号与一些比较新的ARM芯片进行通讯,而且还可以作为那些同时支持JTAG和SWD的芯片的仿真器。不过SWD仅支持调试,不支持边检扫描。对于一些芯片,还有专门的编程下载器,这些下载器仅支持擦写FLASH的功能,不支持调试和边界扫描。对于此类专用下载器,OpenOCD暂时并不支持。

支持的仿真器硬件列表树下:
1: parport
2: dummy
3: ftdi
4: usb_blaster
5: jtag_vpi
6: ft232r
7: amt_jtagaccel
8: gw16012
9: presto
10: usbprog
11: openjtag
12: jlink
13: vsllink
14: rlink
15: ulink
16: arm-jtag-ew
17: remote_bitbang
18: hla
19: osbdm
20: opendous
21: aice
22: cmsis-dap
23: kitprog
24: xds110
25: st-link

GDB调试的内核如下:
1: arm7tdmi 
2: arm9tdmi 
3: arm920t 
4: arm720t 
5: arm966e 
6: arm946e 
7: arm926ejs 
8: fa526 
9: feroceon 
10: dragonite 
11: xscale 
12: cortex_m 
13: cortex_a 
14: cortex_r4 
15: arm11 
16: ls1_sap 
17: mips_m4k 
18: avr 
19: dsp563xx 
20: dsp5680xx 
21: testee 
22: avr32_ap7k 
23: hla_target 
24: nds32_v2 
25: nds32_v3 
26: nds32_v3m 
27: or1k 
28: quark_x10xx 
29: quark_d20xx 
30: stm8 
31: riscv 
32: mem_ap 
33: esirisc 
34: arcv2 
35: aarch64 
36: mips_mips64

目前最新的版本是OpenOCD 0.11.0 released。

我们为什么选择OpenOCD?

现在应该很清楚了。只要开源代码更新,就有相应的xPack OpenOCD版本更新。而且不存在license 版权问题。如果有能力的话,可以基于现有的开源代码,修改支持专用芯片。例如乐鑫信息科技(www.espressif.com)专门为自己的芯片开发了可支持烧写的 openocd-esp32 和 esp8266-openocd。

那么我们如何在Windows10 下使用OpenOCD呢?

1. 从 https://github.com/xpack-dev-tools/openocd-xpack/releases/ 获取到最新的windows的版本 xpack-openocd-0.11.0-1-win32-x64.zip。优点: 不需要编译直接使用。 缺点: 不能自己增加私有功能。

2. 搭建OpenOCD环境基于Window10+Cygwin。优点: 可以自己修改源码增加私有功能。缺点: 需要熟悉Linux命令,一旦出现编译问题需要自己解决。

下面介绍一下如何搭建OpenOCD环境基于Window10+Cygwin?

 如何安装Cygwin

我们在Cygwin Shell中构建和运行OpenOCD。 Cygwin是在Windows 10操作系统上安装Linux环境的绝佳解决方案。 除了OpenOCD,我们还广泛地将它用作X Windows服务器和安全外壳(SSH),用于从Windows桌面与Linux PC联网。
Cygwin的安装很简单,但是选择正确的软件包可能很棘手。 我们建议您按照Cygwin主页上的说明进行操作,这是我使用的步骤的摘要:
1.下载并运行/安装 setup-x86_64.exe (64-bit installation)。

2.选择“从Internet安装”作为下载源。

我这里选择在D盘根目录下。

下面是你下载的软件包存放在哪里,我这里是把我的安装程序和软件包放在同一个文件夹里

选择下载代理。

3.安装下面列出的软件包。
Cygwin Devel软件包要安装:
    • autobuild
    • autoconf
    • autoconf-archive
    • automake
    • dos2unix
    • git
    • gcc-core
    • gcc-g++
    • libtool
    • libusb1.0
    • libusb1.0-devel
    • wget
    • make
    • pkg-config
    • Usbutils
简单举例git软件包截图:

其他的软件包操作类型。

4. 让安装程序在桌面上创建一个Cygwin终端,然后在安装程序完成后启动终端/shell。

OpenOCD安装

运行图标 Cygwin64 Terminal

下载OPENOCD需要的最新的FTDI新驱动包:

$ mkdir -p /build; cd /build
$ wget https://www.intra2net.com/en/developer/libftdi/download/libftdi1-1.5.tar.bz2
--2021-03-22 18:51:13--  https://www.intra2net.com/en/developer/libftdi/download/libftdi1-1.5.tar.bz2
Resolving www.intra2net.com (www.intra2net.com)... 62.75.181.28, 85.214.138.66
Connecting to www.intra2net.com (www.intra2net.com)|62.75.181.28|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 116297 (114K) [application/x-bzip2]
Saving to: ‘libftdi1-1.5.tar.bz2.1’libftdi1-1.5.tar.bz2.1                   100%[=================================================================================>] 113.57K  35.5KB/s    in 3.2s2021-03-22 18:51:18 (35.5 KB/s) - ‘libftdi1-1.5.tar.bz2.1’ saved [116297/116297]

下载OPENOCD软件包,并安装OPENOCD

$  git clone https://git.code.sf.net/p/openocd/code  openocd
Cloning into 'openocd'...
remote: Enumerating objects: 67709, done.
remote: Counting objects: 100% (67709/67709), done.
remote: Compressing objects: 100% (31407/31407), done.
remote: Total 67709 (delta 55694), reused 43998 (delta 36123)
Receiving objects: 100% (67709/67709), 15.26 MiB | 1.57 MiB/s, done.
Resolving deltas: 100% (55694/55694), done.
Updating files: 100% (1794/1794), done.$ cd openocd
$ git checkout f342aa
M       jimtcl
Note: switching to 'f342aa'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:git switch -c <new-branch-name>
Or undo this operation with:git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at f342aac08 The openocd-0.11.0 release$  ./bootstrap
+ aclocal --warnings=all
+ libtoolize --automake --copy
+ autoconf --warnings=all
+ autoheader --warnings=all
+ automake --warnings=all --gnu --add-missing --copy
configure.ac:27: installing './compile'
configure.ac:39: installing './config.guess'
configure.ac:39: installing './config.sub'
configure.ac:17: installing './install-sh'
configure.ac:17: installing './missing'
Makefile.am: installing './INSTALL'
Makefile.am: installing './depcomp'
Makefile.am:22: installing './mdate-sh'
Makefile.am:22: installing './texinfo.tex'
Setting up submodules
Submodule 'jimtcl' (https://github.com/msteveb/jimtcl.git) registered for path 'jimtcl'
Submodule 'src/jtag/drivers/libjaylink' (https://repo.or.cz/libjaylink.git) registered for path 'src/jtag/drivers/libjaylink'
Submodule 'tools/git2cl' (https://repo.or.cz/git2cl.git) registered for path 'tools/git2cl'
Cloning into '/build/openocd/jimtcl'...
Cloning into '/build/openocd/src/jtag/drivers/libjaylink'...
……
……
Bootstrap complete. Quick build instructions:
./configure ....$ mkdir build;cd build
$ ../configure  --with-ftd2xx-linux-tardir=../../libftdi1-1.5 --enable-jlink --enable-ftdi --enable-stlink --enable-cmsis-dap
checking for makeinfo... makeinfo
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
……
……
=== configuring in jimtcl (/build/openocd/build/jimtcl)
configure: running /bin/sh ../../jimtcl/configure.gnu --disable-option-checking '--prefix=/usr/local'  '--with-ftd2xx-linux-tardir=../../libftdi1-1.5' '--enable-jlink' '--enable-ftdi' '--enable-stlink' '--enable-cmsis-dap' 'PKG_CONFIG_PATH=/usr/local/lib/pkgconfig' 'HIDAPI_LIBS=/usr/local/lib/libhidapi.a' --cache-file=/dev/null --srcdir=../../jimtcl
……
……OpenOCD configuration summary
--------------------------------------------------
MPSSE mode of FTDI based devices        yes
ST-Link Programmer                      yes
TI ICDI JTAG Programmer                 yes (auto)
Keil ULINK JTAG Programmer              yes (auto)
Altera USB-Blaster II Compatible        yes (auto)
Bitbang mode of FT232R based devices    yes (auto)
Versaloon-Link JTAG Programmer          yes (auto)
TI XDS110 Debug Probe                   yes (auto)
CMSIS-DAP v2 Compliant Debugger         yes (auto)
OSBDM (JTAG only) Programmer            yes (auto)
eStick/opendous JTAG Programmer         yes (auto)
Raisonance RLink JTAG Programmer        yes (auto)
Andes JTAG Programmer                   yes (auto)
USBProg JTAG Programmer                 no
Olimex ARM-JTAG-EW Programmer           no
CMSIS-DAP Compliant Debugger            yes
Nu-Link Programmer                      yes (auto)
Cypress KitProg Programmer              yes (auto)
Altera USB-Blaster Compatible           no
ASIX Presto Adapter                     no
OpenJTAG Adapter                        no
Linux GPIO bitbang through libgpiod     no
SEGGER J-Link Programmer                yes
Use Capstone disassembly framework      no$ make
$ make install
$ which openocd
/usr/local/bin/openocd

下面是我实际使用OpenOCD和调试工具FT2232HL连接ARM Cortex M 开发板的log

$ openocd.exe  -f ftdi_ft2232d.cfg -f nxp_s32k3x4.cfg
Open On-Chip Debugger 0.11.0 (2021-03-23-12:47)
Licensed under GNU GPL v2
For bug reports, readhttp://openocd.org/doc/doxygen/bugs.html
Info : FTDI SWD mode enabled
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED  #忽略这两个错误
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : clock speed 1000 kHz
Info : SWD DPIDR 0x6ba02477
Info : s32k3xx.armv7m.cm7_0: hardware has 8 breakpoints, 4 watchpoints
Info : starting gdb server for s32k3xx.armv7m.cm7_0 on 3333
Info : Listening on port 3333 for gdb connections
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections

如何搭建OpenOCD环境基于Window10+Cygwin?相关推荐

  1. 搭建hadoop开发环境--基于xp+cygwin

    2019独角兽企业重金招聘Python工程师标准>>> 1.安装cygwin 参考博文:http://hi.baidu.com/%BD%AB%D6%AE%B7%E7_%BE%B2%D ...

  2. 一个快速实现彩屏应用的跨平台快速原型开发工具平台,最重要的是还免费!8ms.xyz平台原以为是单片机版墨刀,今天上去玩了才知道平台厉害的很,基于WEB端免搭建开发环境,跑的还是C代码编译出来的程序!

    哈哈哈哈,最近发现一个好用的在线编译.下载.烧录的跨平台快速原型开发工具平台,名字好记–8ms,单看名字是真的不知道干嘛的,不知道为啥叫这个?不多想了,好用就得分享给大家,独乐乐不如众乐乐呀-- 好用 ...

  3. window10下搭建汇编环境(软件+资料)

    window10下搭建汇编环境 0x00 软件和资料 软件包含: dosbox debug masm link exe2bin(这个暂时可以忽略) 资料包含: 王爽老师的<汇编语言>第二版 ...

  4. 深入浅出Docker(五):基于Fig搭建开发环境

    本文原创版权归 infoq 肖德时 所有,此处为技术收藏,如有再转,请于篇头保留原创作者及出处,以示尊重! 作者: 肖德时 原文: http://www.infoq.com/cn/articles/d ...

  5. Class 2 基于ECS快速搭建Docker环境

    讲点故事 Docker 是什么? Docker 是一种目前主流的.基于 Linux namesplace.chroot.cgroup 等特性的容器技术,因此它适用于 Linux 操作系统 (win 平 ...

  6. 利用HFS软件一分钟搭建好ESP8266基于Arduino开发环境

    利用HFS一分钟搭建好ESP8266基于Arduino开发环境

  7. 【安卓开发系列 -- 系统开发】搭建云手机容器环境 (基于 openvmi)

    [安卓开发系列 -- 系统开发]搭建云手机容器环境 (基于 openvmi) [1]编译安装 openvmi [1.1]安装相关依赖 apt install -y build-essential cm ...

  8. Serverless 开发,基于 IoT物联网 + 表格存储DB + DataV 搭建实时环境监控大屏

    今天给大家带来基于阿里云 IoT 物联网平台 + Tablestore 表格存储数据库 + DataV大屏 三大云产品组合搭建实时环境监控大屏的开发实战. 少啰嗦,先看效果. 部署后效果    1.技 ...

  9. linux 搭建开发stm32 stlink,ROS2与STM32入门教程-搭建开发环境(ubuntu+eclipse+cubemx+stlink+openocd)...

    ROS2与C++入门教程-搭建开发环境(ubuntu+eclipse+cubemx+stlink+opencd) 说明: 介绍如何在ubuntu下搭建开发环境 环境:ubuntu20.04 + ecl ...

  10. 基于阿里云ECS弹性云服务器快速搭建Docker环境

    基于ECS快速搭建Docker环境 什么是docker? ​ Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也 ...

最新文章

  1. 百家中华老字号故宫过大年
  2. Python 技术篇-百度语音合成SDK接口调用演示
  3. Python 中list.sort和sorted以及bisect
  4. python 库列表_python库安装列表
  5. 【算法】Bellman-Ford算法(单源最短路径问题)(判断负圈)
  6. eclipse解决Android Library Project jar包重复导致的问题
  7. 杨辉三角——数组解决
  8. python图形绘制含注释
  9. Django:视图装饰器
  10. 查询各个商品分类中各有多少商品的SQL语句
  11. Linux从初学到精通
  12. 考勤系统 服务器管理,zktime5.0考勤管理系统
  13. java中如何写像下雨_雨声像什么的比喻句,形容下雨的声音的句子
  14. 中国8位域名大玩家曝光(域名背后的真相)
  15. 一位博士在华为的 22 年
  16. 数据结构——前序线索二叉树及其前序遍历
  17. android中高德地图定位功能并且获取定位的城市
  18. Labview Socket通讯_通讯板卡
  19. 网络爬虫是什么意思,可以实现什么效果
  20. Codeforces1509.B. TMT Document

热门文章

  1. java登录界面圆形头像,Android使用CircleImageView实现圆形头像的方法
  2. DevOps系列之 —— 持续规划与设计(三)敏捷项目管理的方法【Kanban 与 Scrum】
  3. 【观察】星环科技“七剑下天山”,做数据世界超高速引擎
  4. 计算机2级选择题及答案,计算机二级Office模拟试题及答案
  5. 正睿集训模拟赛 Day1
  6. 区块链教程Fabric1.0源代码分析Ledger(账本)二
  7. 从百亿美元到零估值,硅谷的Theranos或许不止一个
  8. AQS的前菜—详解CLH队列锁
  9. 广义相对论与狭义相对论的区别
  10. Google文档初学者指南