日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
一文學(xué)會(huì)J-Linkcmd的使用

01WHY

為什么要使用到J-LinkCommander呢???大部分情況下,我們使用J-link都是在IDE中debug使用的,出現(xiàn)問(wèn)題,直接debug復(fù)現(xiàn)然后解決。這是最常見(jiàn)的開(kāi)發(fā)方式。

南海網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)2013年開(kāi)創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

但是有些情況我們不能使用IDE直接debug,比如發(fā)布版本(JTAG或SWD接口可以正常使用),大批量生產(chǎn)時(shí)發(fā)現(xiàn)幾片異常的板子,重新debug問(wèn)題就消失了。

這個(gè)時(shí)候使用IDE直接debug已經(jīng)不能解決問(wèn)題,我們需要使用J-LinkCommander讀取關(guān)鍵寄存器的值來(lái)協(xié)助我們定位排查問(wèn)題。

02Jlinkcmd使用

Jlinkcmd它可以方便用戶在非仿真的情況下,hold內(nèi)核、單步、全速、設(shè)置斷點(diǎn)、查看內(nèi)核和外設(shè)寄存器、讀取flash代碼等等,方便大家擁有最高的權(quán)限查看在運(yùn)行中的MCU情況,查找非IDE仿真情況下,MCU運(yùn)行異常的原因。

打開(kāi)Jlinkcmd,如果單獨(dú)安裝了jlink驅(qū)動(dòng),我們可以在開(kāi)始菜單找到Jlinkcmd。

或者在安裝目錄中找到它

如果你們有獨(dú)立安裝Jlink驅(qū)動(dòng),同樣也可以在Keil的安裝目錄中找到它

首先使用Jlink連接好MCU,打開(kāi)軟件“Jlink.exe

按照提示輸入相應(yīng)信息connect->?->s->回車(舊版只需要輸入usb即可連接目標(biāo)芯片)

正確的鏈接目標(biāo)芯片后:

如上圖所示,選項(xiàng)字節(jié)里為"5AA5"即為無(wú)保護(hù)狀態(tài)。

Jlinkcommand常用命令簡(jiǎn)介:

  • mem 讀內(nèi)存
  • mem8 讀8字節(jié)內(nèi)存
  • mem16 讀16字節(jié)內(nèi)存
  • mem32 讀32字節(jié)內(nèi)存
  • w1 寫(xiě)8字節(jié)內(nèi)存
  • w2 寫(xiě)16字節(jié)內(nèi)存
  • w4 寫(xiě)32字節(jié)內(nèi)存
  • h 停止cpu運(yùn)行的程序
  • setbp 設(shè)置斷點(diǎn)
  • g 跳到代碼段地址執(zhí)行
  • s 單步執(zhí)行(調(diào)試用)
  • r 復(fù)位

03實(shí)測(cè)

接下來(lái)就是實(shí)測(cè)環(huán)節(jié),我們通過(guò)一個(gè)真實(shí)的例子演示一下Jlinkcmd的使用。在之前文章《STM32延時(shí)函數(shù)的四種方法》中有以下代碼

 
 
 
 
  1. void delay_ms(uint16_t nms)
  2. {
  3.   uint32_t temp;
  4.   SysTick->LOAD = RCC_Clocks.HCLK_Frequency/1000/8*nms;
  5.   SysTick->VAL=0X00;//清空計(jì)數(shù)器
  6.   SysTick->CTRL=0X01;//使能,減到零是無(wú)動(dòng)作,采用外部時(shí)鐘源
  7.   do
  8.   {
  9.     temp=SysTick->CTRL;//讀取當(dāng)前倒計(jì)數(shù)值
  10.   }while((temp&0x01)&&(!(temp&(1<<16))));//等待時(shí)間到達(dá)
  11.   SysTick->CTRL=0x00; //關(guān)閉計(jì)數(shù)器
  12.   SysTick->VAL =0X00; //清空計(jì)數(shù)器
  13. }

調(diào)用示例

 
 
 
 
  1. while (1)
  2.  {
  3.    GPIO_SetBits(GPIOE,GPIO_Pin_4);  //熄滅LED燈                     
  4.    delay_ms(500);//延時(shí)500ms
  5.    GPIO_ResetBits(GPIOE,GPIO_Pin_4);//點(diǎn)亮LED燈                     
  6.    delay_ms(500);//延時(shí)500ms
  7.  }

我們就用來(lái)驗(yàn)證SysTick->LOAD寄存器的值。對(duì)于上述代碼SysTick->LOAD的寄存器地址,我們可以按照芯片用戶手冊(cè)直接推算地址?;蛘呷缦旅孢@樣,寫(xiě)段測(cè)試代碼。

從上圖得知,SysTick->LOAD寄存器的地址是0XE000E014,寫(xiě)入寄存器的值是0X007270E0。

按照上述方案讀取寄存器的值,步驟如下:

可以看到地址0XE000E014的SysTick->LOAD寄存器的值為0X7270E0。

04后記

這里只是提供了一個(gè)簡(jiǎn)單的演示,可以非IDE仿真情況下,讀取寄存器,協(xié)助排查MCU運(yùn)行異常的原因,畢竟如果直接debug就能查到問(wèn)題,熟悉32系列單片機(jī)的畢業(yè)生都可以做到。

我們需要在工作中積累這樣類似的經(jīng)驗(yàn),巧妙使用工具處理一些“詭異”的問(wèn)題,積累開(kāi)發(fā)經(jīng)驗(yàn)。

畢竟,填坑力就是核心競(jìng)爭(zhēng)力。

本文轉(zhuǎn)載自微信公眾號(hào)「知曉編程」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系知曉編程公眾號(hào)。


分享題目:一文學(xué)會(huì)J-Linkcmd的使用
文章分享:http://www.5511xx.com/article/dpeiogc.html