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 | 目標晶片復位 |
注意:
- 要下載的目標檔案需要使用絕對路徑,所以下載之前先使用
pwd
檢視一下,然後直接複製過去就ok; - 下載之前必須要先使用
halt
是目標晶片停止執行
復位後即可看到板子綠色燈亮,下載成功:
退出可使用ctrl
+]
即可退出,然後輸入q
退出。
5.將openocd下載檔案命令寫入makefile
修改makefile
:
然後使用make download
命令,直接實現一鍵下載:
上一篇:Linux下開發stm32(一) | 使用gcc-arm-none-eabi工具鏈編譯
下一篇:Linux下開發stm32(三) | 暫存器工程開發