前言
前段時間用Xpack打包的OpenOCD可執行檔案發現無法下載下傳APM32F4的晶片,後面研究發現是OpenOCD未支援APM32系列MCU導緻的,我在添加晶片支援的過程中嘗試了許多方法,WSL2、Cygwin等環境去編譯,發現都有各種各樣的問題。現将能夠順利編譯的MSYS2編譯的過程給大家分享一下。
1 安裝MSYS2
安裝連結如下MSYS2 (http://www.msys2.org/),直接按照軟體步驟一步步安裝即可。安裝完軟體後需要對其環境需要更新,建議其鏡像源切換至國内的。以下檔案均在其安裝目錄下可以找到。
編輯 /etc/pacman.d/mirrorlist.mingw32 ,在檔案開頭添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
編輯 /etc/pacman.d/mirrorlist.mingw64 ,在檔案開頭添加:
r = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
編輯 /etc/pacman.d/mirrorlist.msys ,在檔案開頭添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
2 安裝相應的依賴環境點選相應的指令行軟體打開指令行視窗,這裡選擇“MSYS2 MINGW64”。
1. 更新MSYS2,使用以下指令更新系統檔案。直至無更新内容為止。
pacman -Syuu
2. 安裝依賴環境,
不同的作業系統對安裝的環境有些許的差異要求,一般而言不同的軟體依賴包有差異的一般為64bit的辨別為“x86_64”,而32bit系統一般為“i686”。其相關的Pack可以在該網址搜尋到。[Base Packages - MSYS2 Packages](https://packages.msys2.org/base)
64bit:
pacman -S libtool autoconf automake texinfo pkg-config make autogen git unzip bzip2 base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-libusb mingw-w64-x86_64-libusb-compat-git mingw-w64-x86_64-hidapi mingw-w64-x86_64-libftdi</div><div> mingw-w64-x86_64-arm-none-eabi-gcc mingw-w64-x86_64-capstone
32bit:
pacman -S libtool autoconf automake texinfo pkg-config make autogen git unzip bzip2 base-devel mingw-w64-i686-toolchain mingw-w64-i686-libusb mingw-w64-i686-libusb-compat-git mingw-w64-i686-hidapi mingw-w64-i686-libftdi mingw-w64-i686-capstone
3 下載下傳與編譯OpenOCD
3.1 下載下傳OpenOCD
使用以下指令将克隆最新的OpenOCD源碼至本地:
mkdir -p ~/build; cd ~/build
git clone https://git.code.sf.net/p/openocd/code openocd
cd ~/build/openocd/
./bootstrap
如果克隆指定版本的OpenOCD(如),可以使用下面的指令:
git clone -b 2.20.3 --depth=1 https://git.code.sf.net/p/openocd/code openocd
3.2 配置OpenOCD
使用以下指令配置OpenOCD,這裡選擇“--enable-ftdi”配置,其他配置(隻要安裝了相應的依賴)會預設開啟:
mkdir build
cd build
../configure --enable-ftdi
執行完以上指令後,指令行視窗會最終顯示:
3.3 編譯OpenOCD
使用以下指令編譯OpenOCD:
make
make install
編譯完畢OpenOCD後就可以将相應的檔案複制出來完成對OpenOCD的打包壓縮了。
openocd-v0.12
├── bin
│ ├── libftdi1-config
│ ├── libftdi1.dll
│ ├── libgcc_s_sjlj-1.dll
│ ├── libhidapi-0.dll
│ ├── libusb-1.0.dll
│ ├── libwinpthread-1.dll
│ └── openocd.exe
├── include
│ ├── capstone
│ │ ├── arm.h
│ │ ├── arm64.h
│ │ ├── capstone.h
│ │ ├── evm.h
│ │ ├── m680x.h
│ │ ├── m68k.h
│ │ ├── mips.h
│ │ ├── platform.h
│ │ ├── ppc.h
│ │ ├── sparc.h
│ │ ├── systemz.h
│ │ ├── tms320c64x.h
│ │ ├── x86.h
│ │ └── xcore.h
│ ├── hidapi
│ │ └── hidapi.h
│ ├── libftdi1
│ │ └── ftdi.h
│ └── libusb-1.0
│ └── libusb.h
├── lib
│ ├── capstone.lib
│ ├── cmake
│ │ └── libftdi1
│ │ ├── LibFTDI1Config.cmake
│ │ ├── LibFTDI1ConfigVersion.cmake
│ │ └── UseLibFTDI1.cmake
│ ├── libftdi1.dll.a
│ ├── libhidapi.dll.a
│ ├── libhidapi.la
│ ├── libusb-1.0.dll.a
│ ├── libusb-1.0.la
│ └── pkgconfig
│ ├── capstone.pc
│ ├── hidapi.pc
│ ├── libftdi1.pc
│ ├── libftdipp1.pc
│ └── libusb-1.0.pc
└── share
├── doc
│ └── hidapi
│ ├── AUTHORS.txt
│ ├── LICENSE-bsd.txt
│ ├── LICENSE-gpl3.txt
│ ├── LICENSE-orig.txt
│ ├── LICENSE.txt
│ └── README.md
├── info
│ ├── dir
│ ├── openocd.info
│ ├── openocd.info-1
│ └── openocd.info-2
├── man
│ └── man1
│ └── openocd.1
└── openocd
├── contrib
│ ├── 60-openocd.rules
│ └── libdcc
├── OpenULINK
│ └── ulink_firmware.hex
└── scripts
├── bitsbytes.tcl
├── board
├── chip
├── cpld
├── cpu
├── fpga
├── interface
├── memory.tcl
├── mem_helper.tcl
├── mmr_helpers.tcl
├── target
├── test
└── tools
最後在openocd.exe 目錄下運作CMD,輸入openocd按下回車即可看到相應的運作資訊:
---------------------
作者:kai迪皮
連結:https://bbs.21ic.com/icview-3269090-1-1.html
來源:21ic.com
此文章已獲得原創/原創獎标簽,著作權歸21ic所有,任何人未經允許禁止轉載。