stm32-f411re nucleo開發板本身自帶了st-link調試器子板,在Ubuntu環境下接通平臺的mini type-b usb口,執行lsusb 可以看到
lsusb -t 可以看的更清楚,接口功能顯示出來了. 
其中的st-link/v2.1設備(nucleo-f103rb)就是stlink調試器, 固件版本是v2.1 , 其實它本身也是一塊基于stm32的開發板,只不過內部的固件已經燒入了調試器的調試邏輯,成了一個專用的調試設備. stlink調試子板通過mini USB-type B 口開放除了三個主要功能(interfaces), 分別是: 1.st-link調試器功能. 2. com串行口,用于調試打印輸出, linux上就是 /dev/ttyACM0設備. 3.mass storage,插入平臺后PC會自動彈出mount好的目錄, 空間不大,只有500k, 里面有st的一些support文件. 4. 給nucleo主板供電. 以上三個功能都由st-link子版提供, 在pcb面積要求非常嚴格的場合,st-link子板可以切系下來,只留nucleo主板. 這樣可以節省pcb板面積.切下來的st-link就成了一個完全獨立的stlink適配器, 可以用來調試其他的兼容平臺.
前文有提到使用自帶的st-link對平臺進行裸機調試,本文介紹如何使用外界調試器(J-link)來調試nucleo主板, 相當于bypass掉st-link子板的調試功能1,只使用其他三項功能.
所需環境: 1.ubuntu14.04 with kernel 4.4.0 2.J-link with firmware v9.4, support SWD+JTAG. 3.杜邦跳線三條. 4. OpenOCD, v1.0 源碼編譯安裝,作用類似于GDBServer.
思路很簡單, stlink子板上的CN4口是6pin swd輸入口, 用來引入外部swd調試器的調試信號(根據原理圖,似乎也可以連接外部swd平臺,用子板st-link調試外部平臺,這樣來看,這個坐子既能輸入也能輸出調試信號).主機環境運行openOCD和 gdb,完成對目標nucleo板的調試.
附上部分原理圖,看得清楚 
這里還必須注意CN2的連接, 根據原理圖和注釋,兩個跳線帽插入的時候,調試電路接通 nucleo主板, (swd調試需要兩條線, t_jtck和t_jtms,t_swo reserved. , 跳線冒存在的時候,可以看到無論st-link還是j-link,最終都會連接到nucleo主板,所以此時無論st-link子板還是jlink,調試的都是nucleo主板), 但是當跳線冒拔出后, stlink仍然連接的是nucleo主板,但從cn4過來的信號直接輸入到stlink子版的主控調試引腳中, 所以構成了 j-link調試 st-link子版,st-link子版調試 nucleo主板的兩級調試.
因為要使用j-link調試nucleo, 我們這里跳線冒是閉合的.

CN4的引腳排列圖: 
我們只需要連接2和4到 jlinl即可:
jlink的引腳排列圖 
連接線序: 
J-link的9,4,7,13分別和 cn4的2,3,4,6互連.

接著,開啟一個shell終端會話 執行openocd -f interface/jlink.cfg -f target/stm32f4x.cfg 
這里jlink.cfg要修改一下,增加swd接口選擇配置,也就是在默認配置下添加下面的第12行內容 
另開shell終端,運行gdb調試,連接 3333端口, 前文有詳細介紹,這里不在另行說明,運行后是這個樣子: 
列舉gdb下幾個比較有用的命令: mon reset halt 從異常復位向量reset處開始執行 mon targets 查看連接設備狀態
debug的過程中遇到一個比較有意思的現象,看到國外某網站上說openOCD源文件目錄下./tcl/board目錄下有 此開發板的配置,照了一下果然有個名稱差不多的,./board/st_nucleo_f4.cfg 文件,就用它配置openOCD試了一下:
看到輸出沒有問題還以為jlink聯通了,然后debug了一下也可以,還以為jlink替代stlink調試OK了. 后面仔細一看輸出,interface選擇的竟然是stlink,”hla”, 不是jlink. 原因其實前文講過, 此種連接模式下無論jlink還是st-link,都連接到了mcu主板, 所以兩個調試器同時連接,也同時發揮作用, 看來默認的 st_nucleo_f4.cfg配置使用的interface是 stlink,不是jlink”, 對于這一點,下圖看的明白: 
可以看到接口默認使用的是stlink-v2-1.cfg文件,里面將接口配置成了 hla,而不是jlink. :) ok done!
新聞熱點
疑難解答