專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> STM32 >> 瀏覽文章

STM32 Cortex 單片機(jī) SWD 下載方式調(diào)試筆記

作者:真誠冰雪天涯   來源:真誠冰雪天涯   點(diǎn)擊數(shù):  更新時(shí)間:2014年06月17日   【字體:
一、SWD 下載方式根據(jù)編程器的版本分為以下幾種:

1. 市面上的常用仿真器對 SWD 模式支持情況

        (1) JLINKV6 支持 SWD 仿真模式, 速度較慢。

        (2) JLINKV7 比較好的支持 SWD 仿真模式, 速度有了明顯的提高,速度是 JLINKV6 6 倍。 

        (3) JLINKV8 非常好的支持 SWD 仿真模式, 速度可以到 10M

        (4) ULINK1 不支持 SWD 模式。

        (5) 盜版 ULINK2 非常好的支持 SWD 模式, 速度可以達(dá)到 10M。

        (6) 正版 ULINK2 非常好的支持 SWD 模式, 速度可以達(dá)到 10M

2. SWD 硬件接口上的不同

        (1) JLINKV6 需要的硬件接口為: GND, RST, SWDIO, SWDCLK

        (2) JLINKV7 需要的硬件接口為: GND, RST, SWDIO, SWDCLK

        (3) JLINKV8 需要的硬件接口為: VCC, GND, RST, SWDIO, SWDCLK (注:下面有我自己用JLINKV8的實(shí)際連線及相應(yīng)實(shí)驗(yàn)結(jié)果)

        (4) ULINK1 不支持 SWD 模式

        (5) 盜版 ULINK2 需要的硬件接口為: GND, RST, SWDIO, SWDCLK

        (6) 正版 ULINK2 需要的硬件接口為: GND, RST, SWDIO, SWDCLK

    由此可以看到只有 JLINKV8 需要 5 個(gè)引腳, 即多了一個(gè)VCC引腳,其好處是: 仿真器對目標(biāo)板子的仿真需要用到 RST 引腳, 使用仿真器內(nèi)部的 VCC 作這個(gè)功能其實(shí)并不是非常美妙。 因此,JLINKV8 選擇了只和目標(biāo)板共 GND, 但不共 VCC。 因此我覺得這種模式最合理, 當(dāng)然通常情況下仿真器和目標(biāo)板共 GND VCC 是沒有錯的。(編者備注:以上這段話源自網(wǎng)絡(luò),實(shí)際測試中不接RST引腳,仿真能正常工作,未發(fā)現(xiàn)異常。

  

測試環(huán)境

MDK 開發(fā)環(huán)境 版本號:V4.22              編程器:J-Link V8 4.35b

J-Flash ARM 燒寫軟件版本號:V4.02e      目標(biāo)板芯片:STM32F101R8       PC操作系統(tǒng):Windows XP

 

 

接線模式

功能狀態(tài)            

VCC、SWDIOSWCLK

GND 2根信號線對電源上拉10K電阻,此電阻在我們的小轉(zhuǎn)接板上)

VCC、SWDIOSWCLK

GND 2根信號線對電源上拉10K電阻,此電阻在我們的小轉(zhuǎn)接板上未焊接)

VCC、SWDIO、SWCLK

RST、GND

SWDIOSWCLK 、GND

VCC、SWDIOSWCLK

MDK 下載及仿真

正常

正常

正常

不能下載

不能下載

MDK  J-Link 速度500KHZ

正常

正常

正常

不能下載

不能下載

MDK  J-Link 速度1MHZ

不穩(wěn)定

不穩(wěn)定

不穩(wěn)定

不能下載

不能下載

下載時(shí)目標(biāo)板是否需手動重啟

不需要

不需要

不需要

\

\

J-Flash ARM 下載

正常

正常

正常

不能下載

不能下載

MDK\options\Debug\setting

\SW device 窗口

能正常識別芯片ID  0X1BA01477

能正常識別芯片ID  0X1BA01477

能正常識別芯片ID  0X1BA01477

未能識別出芯片ID

未能識別出芯片ID

 

備注:我用2個(gè)編程器對以上情況分別進(jìn)行了測試,一個(gè)編程器是未進(jìn)行升級的,另一個(gè)編程器進(jìn)行了升級(升級到了4.80b),但升級最后時(shí)出現(xiàn)點(diǎn)小問題在4.7.3MDK下仿真有問題。未升級的編程器按照上述方法進(jìn)行SWD下載,功能正常,但是那個(gè)升級過的編程器無法采用SWD下載,在MDK\options\Debug\setting\SW device 窗口 識別器件ID時(shí)總出現(xiàn)如下圖片:

原因分析:可能是升級過的編程器自身有問題,但這個(gè)編程器在4.22MDK下用JTAG方式能夠正常下載及仿真。

  

二、使用J-Flash ARM 下載時(shí)一些問題

   打開該軟件,配置完工程設(shè)置,連接目標(biāo)器件時(shí),經(jīng)常出現(xiàn)如下問題(見圖片):

 

原因分析:出現(xiàn)此類情況,表明軟件與J-Link仿真器未能成功連接,但此時(shí)J-Link MDK 下卻仍能正常使用。解決此類問題的最有效方法是重啟電腦,有時(shí)多插拔幾次J-Link 編程器也能解決,有時(shí)把同時(shí)開著的MDK 關(guān)閉后,重新插拔J-Link也能解決。判斷此種故障一方面是編程器自身原因,一方面是電腦安裝的SEGGER 公司的J-Link 驅(qū)動軟件版本低,還有一種可能就是J-LinkMDK 占用了。

   另請注意,使用J- Flash ARM 下載時(shí) Options\Project settings\Target Interface\SWD \SWD speed after init 要選擇“Auto selection”,若手動指定速度時(shí)容易出錯(實(shí)驗(yàn)時(shí)手動指定速度超過600KHZ ,編程就出錯)。 ”SWD speed before init ”速度則既可以自動也可以手動指定(手動指定為1200KHz 也能正常初始化內(nèi)核)。

 

  通過調(diào)用 J-Link commander 程序,可以判斷PC機(jī)與J-Link 編程器是否正常連接。

正常連接時(shí),如下圖:


未正常連接時(shí)如下圖:


關(guān)閉窗口

相關(guān)文章