2016年6月5日 星期日

Published 下午2:56 by with 0 comment

[基礎] Mspdebug 與 Msp430

較早的文章已經談過Msp430使用開源軟體的開發方法了。
但當時沒有提到程式能夠單步執行的作法,
這一次要談的是如何控制msp430的程式單步執行,
也就是 Mspdebug。

Mspdebug 也是個開源的自由軟體,是專門針對msp430製作的,
可以支援各種不同的ICE運轉。

原作者的網站在此:  http://dlbeer.co.nz/mspdebug/

原作者的網站在這段談到了怎麼在windows底下自己建立這套軟體。
根據操作說明,必須要下載安裝下列軟體:

1. 
Download MinGW installer
Install to C:\mingw - install the 'C Compiler', 'MSYS Basic System' and 'MinGW Developer Toolkit'.

下載 MinGW,這是用來把原始碼編成可執行檔的compiler
在安裝的時候必須安裝這些項目:


千萬不能使用CodeBlocks內附的MinGW,基於一些不明的原因,雖然可以編譯成功但執行起來會是錯誤不斷的。

2.
Download regex-2.7-bin.zip
Open the archive - extract the files from the lib directory to c:\mingw\lib, extract files from include directory to c:\mingw\include.

下載 regex-2.7-bin.zip ,解壓縮後,把lib目錄下的東西拷貝到 MinGw 下的 lib 目錄,而 include 內的東西也拷貝到MinGw下的 include 目錄。

3.
Download libusb-win32
Extract lusb0_usb.h to c:\mingw\include, rename to usb.h
Extract lib/gcc/libusb.a to c:\mingw\lib

下載 libusb-win32 ,解壓縮後把 lusb0_usb.h 拷貝到MinGw下的 include 目錄,並且變更檔案名稱為 usb.h。 把解壓所後的 lib/gcc/  目錄下的libusb.a拷貝到 MinGw下的 lib 目錄。

4.
Download readline-5.0-1-bin.zip
Extract the readline directory from include to c:\mingw\include\readline\
Extract the files from the lib subdirectory to c:\mingw\lib

下載 readline-5.0-1-bin.zip,解壓縮後把readline目錄拷貝到MinGw下的 include 目錄,把lib目錄下的東西拷貝到MinGw下的 lib 目錄。

5.
Download the MSPDebug source code, open a command window, change directory to the MSPDebug sourcecode.

下載mspdebug的原始碼,解壓縮擺放。
修改一下目錄下的makefile,把問號消除

打開命令提示字元視窗,切換到mspdebug解壓縮好的目錄下。


切換進去後,打字輸入
set path=c:\mingw\bin;c:\MinGW\msys\1.0\bin\
make
就會建立出一個叫做 mspdebug 的執行檔。

最後,從剛剛下載解壓縮的檔案中,把 regex2.dll、readline5.dll 拷貝進 mspdebug 的目錄下,
以及根據 libusb 的安裝指引--libusb-win32-bin-README 把 libusb0.dll 安裝進系統。

這樣 mspdebug 就可以執行了。但如果要運作在 Launchpad,還需要安裝一個驅動程式:
在 libusb-win32 目錄的bin底下,有個執行檔 inf-wizard ,USB線連接好Launchpad 執行 inf-wizard之後按下一步,則會出現:
其中兩個 Vendor ID 是 0x0451 的就是 Launchpad  ,有一個是UART介面被佔用了,所以點選另一個 (Interface 1) 產生驅動程式。

這個驅動程式安裝之後,mspdebug 才能連到板子。如果系統是win10,則必須參考強制停止數位簽章的安裝法。

在命令列視窗下,執行 mspdebug rf2500 則會出現:

這樣就代表連線成功了。

接下來先鍵入exit,然後啟動CodeBlocks來改設定讓單步執行可以操作。

在Tools設定裡,添加一個啟動 mspdebug 並且燒錄程式檔的功能:

然後在 debugger設定 裡添加 msp430-elf-gdb 的啟動設定:

開啟上一次用過的LED閃爍專案,在 Properties 設定中增加遠端連線設定
跟OpenOCD的情況不同,這裡的 Additional GDB commands 不需要加任何指令。

在專案設定裡,編譯的項目要添加 -g 以產生除錯用的標誌

編譯成功的話會出現
而加了 -g 之後編譯出的組合語言碼則會是這樣
這樣才能夠讓除錯器自動計算斷點產生的位置。

都完成之後,啟動 tools 下的 mspdebug:
這樣就是 mspdebug 正在等待 GDB 的連線。而連線用的 port 是 2000。

在CodeBlocks的Debug功能中,記得Active debuggers點選你所屬的 msp430 gdb 。
按下Star 後,就可以像之前操作STM32一樣操作斷點的設定。

而斷點操作的時候,mspdebug 的文字視窗也會出現對應的活動
以上完成了msp430的單步執行操作。

必須注意的是,在我的實驗中,舊版的mspgcc (4.6.3)對於和mspdebug的連線,不知道為什麼會出現中斷,這方面是變更為新版 (5.3.0.219) 後才得到解決。

而新版必須要多做的事情包括中斷設定有變,然後編譯完會添加一些啟動碼,必須在link的時候使用 -minrt 這個操作來消除。









      edit

0 意見:

張貼留言