轉載: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。 |
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。 |
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定義。 |
STM32F103C8T6_DAP-SWO_HUANG292.rarblog
142.41 KB, 下載次數: 100, 下載積分: ST金幣 -1ip