內(nèi)容包括SWD硬件連接,Keil仿真設(shè)置與其問題解決,J-Flash解除寫保護(hù)與下載Hex文件及對(duì)芯片批量加密。紫色文字是超鏈接,點(diǎn)擊自動(dòng)跳轉(zhuǎn)至相關(guān)博文。持續(xù)更新,原創(chuàng)不易!?
目錄:
一、SWD實(shí)時(shí)仿真硬件電路
1、SWD實(shí)時(shí)仿真接線
2、注意
二、仿真設(shè)置
三、仿真時(shí)問題的解決(Keil5.12)
1、仿真時(shí)添加變量或數(shù)組
2、程序下載
1)程序下載完成后,J-LINK使單片機(jī)處于復(fù)位狀態(tài)??2)讀保護(hù)與寫保護(hù)
3)盡量不要由J-Link給線路板供電,內(nèi)部有短接? ?4)勾選2處不能燒寫的設(shè)置
3、仿真器與線路板連接需可靠
4、使用J-Link時(shí),Keil軟件出現(xiàn)無響應(yīng)
5、出現(xiàn)“USB無法連接”提示
6、出現(xiàn)“***JLink Error: Can not read register 17 (MSP) while CPU is running”提示
四、J-Flash解除STM32寫保護(hù)
五、J-Link下載Hex文件
1、簡(jiǎn)述
2、與J-Link相關(guān)的設(shè)置
3、燒寫文件載入與連接目標(biāo)
4、問題總結(jié)
1)可連接成功,擦除失敗? ?2)通過程序Download與J-Flash均無法燒錄程序
六、JLink-JScope與RTT使用
1、簡(jiǎn)介
2、HSS模式使用
3、RTT模式使用
所有的操作基于Win7 64位,STM32F103VET6使用J-Link(SWD模式),另可參見“Keil編譯軟件的使用匯總之三、Keil5.12錯(cuò)誤的處理”。
一、SWD實(shí)時(shí)仿真硬件電路
1、SWD實(shí)時(shí)仿真接線
2、注意
JTMS、JTCK外接電路中不能有電容。也可不用RST端,在STM32F407VET6中實(shí)際仿真,速率要降低,我最多到1MHz,如下圖。
速率高了Keil 5中出現(xiàn)“SYSRESETREQ has confused core. Trying to reconnect and use VEC”提示。故實(shí)踐出真知,RST端有必要連接。
二、仿真設(shè)置
J-LINK的SWD仿真時(shí),對(duì)單片機(jī)口線的設(shè)置
void KEY_Init(void)
{
??GPIO_InitTypeDef GPIO_InitStructure;
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//關(guān)閉JTAG,否則 增加PBin(3)鍵失效
//GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
//設(shè)置為GPIO_Remap_SWJ_Disable,表現(xiàn)為找不到芯片;有時(shí)能找到芯片,但程序執(zhí)行到KEY_Init()函數(shù)會(huì)停住,或者報(bào)“CPU_REG_SET():Register 0 is already marked as valid.”
//設(shè)置為GPIO_Remap_SWJ_JTAGDisable即可解決此問題。
??RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD, ENABLE);
??GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_15;
??GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
??GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
??GPIO_Init(GPIOB, &GPIO_InitStructure);
? GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
??GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
??GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
??GPIO_Init(GPIOD, &GPIO_InitStructure);
}
三、仿真時(shí)問題的解決(Keil5.12)
1、仿真時(shí)添加變量或數(shù)組
1)連接上J-Link仿真器,出現(xiàn)數(shù)組顯示為變量,只要在此處設(shè)置斷點(diǎn),再仿真到相應(yīng)的數(shù)組位置即可解決此問題。
2)點(diǎn)變量或數(shù)組右鍵可快速添加到Watch中。
3)對(duì)于局部變量全速運(yùn)行時(shí),看不到變量的內(nèi)容,可修改為全局變量。
2、程序下載
1)程序下載完成后,J-Link使單片機(jī)處于復(fù)位狀態(tài)
只要Start Debug,然后再Stop Debug即可。
或者勾選“Reset and Run”
----------------------
2)讀保護(hù)與寫保護(hù)
在試驗(yàn)時(shí)“編程到FLASH時(shí)寫選項(xiàng)字節(jié)”前面切記不要打鉤。
----------------------
3)盡量不要由J-Link給線路板供電,內(nèi)部有短接
----------------------
4)勾選2處不能燒寫的設(shè)置
3、仿真器與線路板連接需可靠
查看仿真器是否連接上的方法
4、使用J-Link時(shí),Keil軟件出現(xiàn)無響應(yīng)
J-Link連接上線路板,中途線路板斷電(或長(zhǎng)時(shí)間沒有操作),Keil軟件極容易出現(xiàn)無響應(yīng)。拔去J-Link連接電腦的USB線再插上,此時(shí)J-Link已與MCU斷開連接。會(huì)出現(xiàn)如下圖的現(xiàn)象,點(diǎn)擊確定即可。這樣操作一般不容易掉固件。
5、出現(xiàn)“USB無法連接”提示
1)J-Link沒有插入數(shù)據(jù)線,產(chǎn)品連接J-Link,產(chǎn)品上電比較容易發(fā)生丟失固件
2)長(zhǎng)期J-Link不斷電,打開Keil時(shí)也會(huì)丟失固件
3)電腦報(bào)“USB無法連接”,此種情況只能給J-Link重刷固件,移步:實(shí)記JLink-V8刷固件方法。
6、出現(xiàn)“***JLink Error: Can not read register 17 (MSP) while CPU is running”提示
按”二、仿真設(shè)置“做即可解決此問題。?
有時(shí)為了省電,將所有的IO引腳下拉也會(huì)出現(xiàn)此問題。在JTAG調(diào)試的時(shí)候,不能將所有的IO下拉,那樣JTAG就不能正常工作了,將對(duì)應(yīng)的語句注釋掉就可以了。
四、J-Flash解除STM32寫保護(hù)
通過J-Flash軟件,配合JLink仿真器來解鎖。
在Target Device中選擇對(duì)應(yīng)要解鎖的芯片。
以本人所用的STM32F103VE為例,F(xiàn)lash size為512KB,本應(yīng)選擇STM32F411CE,由于STM32F411CE的Flash size為512KB+16MB,因此,選擇STM32F411VE。只要Flash size大小與要解鎖的芯片的Flash大小一致,Device可以不一致。
芯片與JLink連接后,選擇Target-Connect即可連接成功。
The "allow opt. bytes" device selection is only available for STM32F1 series devices. For later devices, memory mapped programming of the option bytes is not feasible as for some series, the option bytes become valid immediately which would cause immediate connection loss to a device (in case readout protection is enabled) before the option byte programming can be verified.
The STM32 series devices provide option bytes which allow "permanent" configuration as well as readout protection for the device. In order to enable or disable readout protection, a sequence of multiple read / write accesses to special function registers of the STM32 MCU has to be performed. The sequence is different for each sub-family of the STM32 device series and is described in the respective reference manual of the device. A list of example J-Link commander files and J-Flash projects which enable or disable the readout protection of an STM32 device is provided below. Please note that the provided files serves as an example / proof of concept. A user may alter them in order to suit their specific use case, e.g. using smaller timeouts, programming other values, etc.
NOTE: A power-on reset is required when securing the device while a debug probe is connected.
五、J-Link下載Hex文件
1、簡(jiǎn)述
本處以燒寫STM32F103VET6說明,軟件:Flasher_Windows_V722a,實(shí)際測(cè)試J-Flash V4.90版亦可行。
2、與J-Link相關(guān)的設(shè)置
加密芯片后通過SWD不能下載程序。
3、燒寫文件載入與連接目標(biāo)
J-Flash 7.22a版本成功下載
J-Flash 4.90版本成功下載
4、問題總結(jié)
1)可連接成功,擦除失敗
提示:RAM check failed @address 0x20000000.
Write: 0x03020100 07060504?
Read : 0xAAAAAAAA AAAAAAAA
(0 bytes of RAM have been checked successfully)
Failed to erasechip
解決:出現(xiàn)此錯(cuò)誤是硬件的錯(cuò)誤,與JLINK與板子的連線或者板子JTAG接口的問題
----------------------
2)通過程序Download與J-Flash均無法燒錄程序
SWD僅使用+3.3V、GND、JTMS、JTCK四根線,未使用RST。對(duì)于先前已燒錄程序的單片機(jī)出現(xiàn)使用ISP燒錄可以成功,但有些單片機(jī)Download與J-Flash均無法燒錄,出現(xiàn)找不到芯片之現(xiàn)象,只要接入RST即可解決。關(guān)于ISP另可參看“單片機(jī)3種燒錄方式解析”。
六、JLink-JScope與RTT使用
1、簡(jiǎn)介??
軟件下載移步:https://www.segger.com/downloads/jlink/,J-Link V7.57安裝后,如下圖所示。
其中的J-Scope為SEGGER公司推出,它可以在目標(biāo)MCU運(yùn)行時(shí),實(shí)時(shí)分析數(shù)據(jù)并圖形化顯示的軟件。它不需要SWO或目標(biāo)上的任何額外引腳等功能,但使用可用的標(biāo)準(zhǔn)調(diào)試端口。J-Scope可以以類似示波器的方式顯示多個(gè)變量的值。它讀取elf或axf文件并允許選擇多個(gè)變量進(jìn)行可視化。只需將目標(biāo)微控制器連接到J-Link并啟動(dòng)J-Scope。只需幾個(gè)步驟即可配置J-Scope,并選擇要顯示的符號(hào)。配置可以存儲(chǔ)在項(xiàng)目文件中,以便于重復(fù)使用和移植。在J-Scope中選擇的每個(gè)符號(hào)都可以單獨(dú)配置。上下移動(dòng)圖形以更改零基線或更改其分辨率。選擇是在圖表中顯示符號(hào)還是僅在監(jiān)視面板中顯示其值。分析收集的數(shù)據(jù),滾動(dòng)可視化圖形,放大和縮小或?qū)?shù)據(jù)保存到文件中以供進(jìn)一步分析。J-Scope可以與調(diào)試環(huán)境并行使用,并擴(kuò)展IDE的調(diào)試體驗(yàn)。J-Scope是Jlink的一個(gè)強(qiáng)大的功能,可以在MCU運(yùn)行時(shí),實(shí)時(shí)查看全局變量的值,并以圖形化顯示,就像示波器一樣。它是通過SWD接口或者JTAG接口,讀取axf文件來選擇要顯示的變量。
目前支持的內(nèi)核:
2、HSS模式使用
通過采樣周期定時(shí)從內(nèi)存文件中讀取變量的值,所以采樣周期和可執(zhí)行文件是必須的,為了更加準(zhǔn)確有效的采集到對(duì)的數(shù)據(jù),最好用volatile聲明變量。這種模式比較簡(jiǎn)單,只需加載keil生成的xx.axf或IAR生成的xx.out即可。
優(yōu)點(diǎn):隨時(shí)可連接MCU,不影響MCU正常運(yùn)行,因?yàn)椴恍杼砑尤魏未a,所以也不會(huì)占用MCU緊張的資源。
缺點(diǎn):速度慢,采樣速率基本固定在1Khz左右,因此僅僅適合采樣變量變化速率低于1Khz的情況,因?yàn)閿?shù)據(jù)是根據(jù)采樣率來的,所以實(shí)時(shí)性不是太準(zhǔn),低速率下影響不大。
1)打開J-Scope,創(chuàng)建一個(gè)工程
2) 配置
3)選擇要查看的變量
4)開始
3、RTT模式使用
需要將RTT需要的軟件包加載到應(yīng)用程序中,RTT模式下,所有的數(shù)據(jù)和時(shí)間戳均是有MCU來提供。
優(yōu)點(diǎn):比HSS更高的數(shù)據(jù)吞吐量,最高可達(dá)2MB/S,不過這個(gè)是由MCU上使用的緩沖區(qū)大小決定,即使只有512字節(jié)的小緩沖區(qū)也可以達(dá)到1MB/S,夠用了;J-Scope數(shù)據(jù)采集與MCU的應(yīng)用程序執(zhí)行同步,因?yàn)閼?yīng)用程序決定何時(shí)以及如何采樣數(shù)據(jù);不需要知道變量位置,RTT緩沖區(qū)的位置由J-Scope自動(dòng)檢測(cè);時(shí)間戳等數(shù)據(jù)可以被添加到數(shù)據(jù)樣本中。
缺點(diǎn):稍微比較麻煩,需要移植RTT代碼,占用MCU資源,大概需要1.4kb左右的Flash,1KB左右的RAM。
1) 找到JLINK驅(qū)動(dòng)的安裝目錄
解壓后可以看到如下圖所示文件,Example目錄是參考的demo,RTT和Syscalls文件夾下就是移植所需要的文件。
RTT目錄內(nèi)容:
Syscalls目錄內(nèi)容:
----------------------
2)添加文件到工程
(1) 在工程下新建一個(gè)文件夾,將上述中提到的文件放到這個(gè)文件夾中
(2) 添加文件到工程
(3) 添加頭文件路徑
將RTT的代碼添加到工程內(nèi),并且在需要打印的地方包含“SEGGER_RTT.h”,這樣就可以使用SEGGER_RTT進(jìn)行打印了。
以上兩種模式使用JTAG或SWD模式均可。文章來源:http://www.zghlxwxcb.cn/news/detail-773345.html
天道忌滿,人道忌全;一半在于己,一半聽自然。?覺得不錯(cuò),動(dòng)動(dòng)發(fā)財(cái)?shù)男∈贮c(diǎn)個(gè)贊哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-773345.html
到了這里,關(guān)于JLink仿真器使用匯總的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!