STM32F103C8T6最小板搞定CMSIS-DAP和SWO功能

轉載:http://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=616081&extra=page%3D&page=1php

2018-06-30重要更新,附件換成了源代碼。
2018-08-29附件更新,與github相同。


同時上傳github:https://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO

----------------------------------------------------------------
2018-06-13更新,搞定Cortex-M的軟啓動,不用鏈接RESET線,下載後Cortex也能立刻自動開始運行。

10元錢能幹什麼?也許早餐都吃不飽。 但是10元錢在TB能夠買到STM32F103C8T6的小板子,著名的BluePill。
<ignore_js_op> 
幾年前,X893大神就移植過了CMSIS-DAP到F103上面,我以爲這個很好玩!!!

因而我就花了一些時間,在X893包的基礎上,作了以下改進:
1. 升級到CMSIS-DAP v2.0最新版。
2. 實現了SWO的主要功能,即printf轉發至SWO口。
3. JTAG功能正常。
4. CDC功能,使用串口2(PA2/PA3),已經改進。
5. 實現了軟啓動功能,使用時可能不須要Reset連線啓動程序。
6. 針對STLINK的廉價硬件,作出了改進版本,穩定。

<ignore_js_op> 

<ignore_js_op> 


<ignore_js_op> 

<ignore_js_op> 

<ignore_js_op> 

<ignore_js_op> 

<ignore_js_op> 

固件見附件,但願有興趣的朋友幫手測試一下。

附件,裏面有兩個LED的閃燈程序用來測試的。
使用SWO功能,須要啓動內核的ITM功能。
不一樣調試環境,啓動ITM插入源代碼的部分,可能有區別,我也不是很明白。
我只用過KEIL,系統要求必須有CMSIS。


<ignore_js_op>

STM32F103C8T6_CMSIS-DAP_SWO-master20180824.zipgit

 

使用SWD-SWO調試程序,是Cortex-M3/M4等高級ARM芯片特有的內核CoreSight獨有的。
優勢:
1. 對原來程序的時序影響很小。
2. 僅多用了一條SWO線(JTAG的JTDO線,F103是PB3引腳)。
3. 不佔用串口,卻能夠方便地使用【printf】功能打印輸出。
4. 速度快於串口,我測試過我這個SWO板子,500Kbps能夠穩定輸出,不丟數據。
5. 其餘SWD/JTAG的斷點功能,查看內存/寄存器變量功能,都有。
6. 燒錄程序,和J-Link/ST-Link同樣。
7. 成本低,10元的小板子,燒入固件就成了。不用再便宜了,路費人工都遠不止10元。
8. ARM開源的,隨便集成到你的開發板上面。

缺點:
1. 速度比J-Link慢,由於F103的這個小板內核速度不夠快。下載速度不知多少,10元的能用已經很好。
2. SWO功能只能用於Cortex-M3/M4/M7......,不能用於Cortex-M0/M0+(內核不支持),其餘功能能夠用。
3. SWO功能只能用來單方向輸出數據,不能像串口調試那樣能夠和上位機互動。
4. SWO功能不支持目標程序中的DMA部分,估計是ARM的CoreSight有限制。
5. 不支持軟件復位。我改的軟件,20180613版(見1樓)已經增長軟件復位功能,只支持Cortex。
6. CMSIS-DAP的最高速度,還有功能,應該受限於ARM/KEIL的限制,否則商用的幾千上萬元專業仿真器還怎麼賣?

個人板子:
SWD mode:                                                        PortNo
                                                SWDIO              PB9
                                                SWCLK              PB8
                                                SWO                 PB7
                                                nRESET             PB6
JTAG mode:
                                                JTMS                 PB9
                                                JTCK                  PB8
                                                JTDO                 PB7
                                                nRESET              PB6
                                                JTDI                   PB5
                                                nTRST                not available
                                                
CDC Function:
                                                UART2-TX           PA2
                                                UART2-RX           PA3
                                                
------------------------------------------
SWD Test passed!
JTAG Test passed!

Individual test results:
Execution breakpoint: passed
Breakpoint on read:   passed
Breakpoint on write:  passed
Register read:        passed
Register write:       passed
Memory read:          passed
Memory write:         passed
Control flow:         passed

CDC function:            OK
SWO function:           OK for printf-to-SWO
Soft-Reset function:   OK for Cortex-M
-----------------------------------------------------------------------------------

另外,安裝時,HID不須要驅動,CDC功能須要安裝下面的驅動程序,我只測試過Win10和Win7。

<ignore_js_op>

Windows-USB-CDC-Driver.rargithub

 

有關CMSIS-DAP的項目,在硬件成本超過20元的板子上面作沒有實際意義,這也是我集中精力作F103小板的緣由。
50-100元,能夠買到A貨的J-Link v9, 性能比CMSIS-DAP好。
160元能夠買到正宗的LPC-LINK2(CMSIS-DAP的高速USB版本,開源的)。

1樓的附件裏面的源代碼,或者固件,也能夠選擇重定義SWD引腳的,這樣用起來更像「真傢伙」,特別是只用4個引腳的時候。
(選擇SWD_REMAP後綴的)
<ignore_js_op> 性能

 

815 Bytes, 下載次數: 182, 下載積分: ST金幣 -1測試

 

我也看過DAPLink,它要求有較大的RAM/ROM來模擬U盤,STM32F103C8的資源有限,我估計github沒有的緣由是這個問題。
DAPLink的底層關鍵部分仍是CMSIS-DAP,目前用v1.1.0。spa

 

今天測試過一些IC開發板,

1. 兩款STM32F407xx的板子,JTAG/SWD正常,SWO正常。
2. LPC824的,正常。
3. nRF51xxx的一款,正常。

重要提示,因爲這種F103最小板的GPIO腳,沒有加任何抗干擾的退偶穩定元件,都是直接鏈接出來的,因此,高速運行時很容易被幹擾。
建議不要使用長線鏈接和排線鏈接,使用分開了的短線會效果更好。 若是直接應用到您的項目之中,建議幾條數據連線外加退偶零件。
若是作成專用的成品小板,留意這一點,就不會有問題。

簡單的解決方法,
1. 在Keil裏面設定低一些的速度,我測試過,設置速度10MHz與1MHz的下載速度差異只有20%,建議使用1MHz。
2. 在每一條數據線上面,串聯一個47~100歐姆的電阻調試

 

有了,見附件。
除了你給的IO線,還有2條線有功能,你能夠本身連線測試,或者告訴我使用其餘的GPIO線:
SWO - PB7
LED - PC13

另外,附件中的固件,移除了JTAG功能,我以爲沒有實用價值,若是您須要,我能夠作,可是須要JTAG的GPIO定義。

 

<ignore_js_op>

STM32F103C8T6_DAP-SWO_HUANG292.rarblog

 

142.41 KB, 下載次數: 100, 下載積分: ST金幣 -1ip

今天,編譯了兩個固件,用於 ST-LINK V2仿真器,改爲CMSIS-DAP,同時帶有SWO和CDC功能。


附件中,-V20和-V21分別用於ST-LINK v2.0(只有一個LED),和v2.1(雙色LED,或兩個LED的)


若是要使用SWO/CDC功能,可能須要本身將有關GPIO線接到外面:
SWO ------------- PB7。
CDC -------------- PA2/PA3(USART2)。

有興趣的朋友能夠試試,TB的ST-LINK,價格已經低到連郵費不到15元,也是白菜價了。
相關文章
相關標籤/搜索