1. 程式人生 > >Linux下開發stm32(二) | 使用openocd下載程式

Linux下開發stm32(二) | 使用openocd下載程式

1.openocd介紹

openocd全名叫做Open On-Chip Debugger,是一個自由開放的片上除錯工具和程式設計工具,目前已經發布到0.10.0版本,目前主流偵錯程式幾乎都支援,具體可以檢視Open On-Chip Debugger:OpenOCD User’s Guide,它的專案託管在sourceforge上,點選下載即可~
注:ubuntu軟體源中也有openocd,但是版本到0.9.0,所以使用拉取原始碼手動安裝。

2.openocd安裝

首先使用命令unzip openocd-0.10.0.zip將下載的zip包解壓,然後重新命名為openocd:

2.1.安裝openocd所需依賴

  • libtool
    先檢視libtool版本,若沒有安裝,則安裝:

  • pkgs-config >= 0.23

  • CMSIS支援需要HIDAPI庫:

  • 基於usb的介面卡依賴於libusb-1.0和一些舊的驅動,還要安裝usb依賴:

2.2.許可權授權

  • sudo:在編譯和安裝的時候最好帶上使用sudo,防止因為管理許可權出錯;
  • contrib / 60-openocd.rules:在Linux上使用USB裝置時,需要將此檔案複製到/etc/udev/rules.d/目錄中:

2.2.編譯OpenOCD

首先使用命令sudo ./configure --help

檢視所有受支援選項的列表,執行sudo ./configure [options](如果沒有設定,options選項可以為空)生成構建所需要的makefile:

最後產生一個配置總結,可以看到預設開啟CMSIS-DAP,那麼如何開啟別的呢?這個在剛剛的help中有說明,比如我要開啟jlink,帶上-enable--jlink引數即可~

2.3.安裝OpenOCD

然後使用sudo make,最後使用sudo make install即可成功安裝,安裝後在/usr/local/share目錄即可看到openocd目錄:

它下面scripts資料夾存放著openocd使用的檔案,在interface

資料夾下存放著下載器介面的檔案,在target下存放著目標晶片的配置檔案:
在這裡插入圖片描述

3.使用openocd連線到目標晶片

openocd的一些引數描述如下:

引數 描述
-f <config file name> 使用配置檔案
-c <command> 執行命令

使用命令openocd -f <介面配置檔案> -f <目標晶片配置檔案>即可成功連線到目標晶片:

  • 介面配置檔案在interface資料夾下;
  • 目標晶片配置檔案在target資料夾下;

4.使用telnet連線到openocd

openocd連線到目標板後,它的預設telnet埠是4444,所以我們可以**新建一個終端(一定不要關閉掉連線到目標板的終端!!!)**連線到openocd的埠,然後使用命令控制。
這裡因為要下載檔案,所以我將路徑切換到之前建立的bin檔案的目錄下,然後使用命令telnet localhost 4444連線到openocd:

這樣就表示連線成功了,接下來使用命令控制目標晶片:

命令 描述
halt 目標晶片掛起,相當於關機
flash write_image erase <要下載的檔案> 將檔案下載到目標晶片flash
reset 目標晶片復位

注意:

  1. 要下載的目標檔案需要使用絕對路徑,所以下載之前先使用pwd檢視一下,然後直接複製過去就ok;
  2. 下載之前必須要先使用halt是目標晶片停止執行

復位後即可看到板子綠色燈亮,下載成功:

退出可使用ctrl+]即可退出,然後輸入q退出。

5.將openocd下載檔案命令寫入makefile

修改makefile
在這裡插入圖片描述

然後使用make download命令,直接實現一鍵下載:

上一篇Linux下開發stm32(一) | 使用gcc-arm-none-eabi工具鏈編譯
下一篇Linux下開發stm32(三) | 暫存器工程開發