成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文學會J-Link cmd的使用

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

[[415231]]

01WHY

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

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

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

02Jlinkcmd使用

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

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

或者在安裝目錄中找到它

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

首先使用Jlink連接好MCU,打開軟件“Jlink.exe

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

正確的鏈接目標芯片后:

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

Jlinkcommand常用命令簡介:

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

03實測

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

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

調(diào)用示例

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

我們就用來驗證SysTick->LOAD寄存器的值。對于上述代碼SysTick->LOAD的寄存器地址,我們可以按照芯片用戶手冊直接推算地址。或者如下面這樣,寫段測試代碼。

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

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

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

04后記

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

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

畢竟,填坑力就是核心競爭力。

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

 

責任編輯:武曉燕 來源: 知曉編程
相關(guān)推薦

2020-08-03 08:01:50

爬蟲技巧

2020-08-31 06:54:37

注解脫敏ELK

2020-04-20 10:47:57

Redis數(shù)據(jù)開發(fā)

2021-06-28 14:13:34

OOM內(nèi)存事故

2021-04-30 07:33:35

效率提升技巧

2021-04-28 07:22:13

HiveJson數(shù)組

2021-06-26 09:26:01

Jupyter主題目錄

2023-11-01 10:49:50

Python面向?qū)ο?/a>

2021-03-29 08:24:18

KubeadmKubernetes1運維

2025-01-14 00:00:00

場景線程數(shù)據(jù)

2019-03-21 09:45:11

TypeScript編程語言Javascript

2021-04-07 08:13:28

LirbeNMS開源SNMP

2020-08-05 08:27:38

CSS Firefox瀏覽器

2023-12-27 07:40:43

HTTP服務(wù)器負載均衡

2020-04-19 21:41:13

Python數(shù)據(jù)可視化

2023-09-26 12:22:37

隊列Python

2019-11-12 09:15:18

MySQL復(fù)制拓撲Orchestrato

2023-07-31 08:18:50

Docker參數(shù)容器

2021-07-30 06:51:28

Nginx運維web

2024-09-26 09:10:08

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: www国产精| 国产激情一区二区三区 | 欧美一级欧美一级在线播放 | 一区二区三区观看视频 | 国产视频1区2区 | 国产一区二区三区精品久久久 | 一区二区三区精品视频 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 亚洲福利| 国产精品亚洲综合 | 国产成人免费 | 一本色道精品久久一区二区三区 | 在线亚洲免费视频 | 性色视频 | 91在线网站| 一区二区三区免费在线观看 | 神马久久久久久久久久 | 日韩精品极品视频在线观看免费 | 亚洲欧美另类在线 | www.精品国产| 精品免费视频 | 日本在线中文 | 久久伊人青青草 | 91社影院在线观看 | 国产午夜精品一区二区三区四区 | 欧美日韩国产综合在线 | 黄色精品视频网站 | 国产一区二区三区视频 | 日韩欧美国产一区二区三区 | 亚洲三区在线 | av免费网站在线观看 | 日韩视频在线一区 | 国产精品日日做人人爱 | 久久机热 | 精品乱码久久久久 | 91中文字幕在线观看 | 国产视频一区二区 | 久久国内精品 | 中文字幕在线一区二区三区 | 亚洲综合无码一区二区 | 精品综合在线 |