0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用調(diào)試器JLink來打印信息

嵌入式情報(bào)局 ? 來源:果果小師弟 ? 作者:果果小師弟 ? 2022-10-14 09:55 ? 次閱讀

摘要:不知道大家在單片機(jī)開發(fā)中是如何打印調(diào)試信息的,大多數(shù)應(yīng)該是用串口調(diào)試打印吧,在大多數(shù)的情況下,一般在制板和寫代碼時(shí)都會(huì)預(yù)留串口1做為調(diào)試打印用。

但是在實(shí)際開發(fā)如果沒有預(yù)留串口怎么辦?其實(shí)我們的下載器是可以用來作為調(diào)試打印來用的,只是很多小伙伴不知道這個(gè)功能而已,今天就來說一下如何用調(diào)試器JLink來打印信息。

1、JLink仿真調(diào)試器

下載器五花八門,但是我只用JLink,小巧方便攜帶。對于單片機(jī)開發(fā)者一般所用的下載器基本就是JLink和ST-Link。這兩者功能差不多,JLink是SEEGER公司的,ST-Link是ST公司的,而且只支持ST系列的芯片。只用JLink下載器調(diào)試,原因就是這玩意體積小,只有四根線,用起來太方便了,YYDS!

3f883264-4afe-11ed-a3b6-dac502259ad0.pngJ-Link OB ARM 仿真調(diào)試器

2、安裝JLink驅(qū)動(dòng)

下載鏈接:https://www.segger.com/downloads/jlink/。買回來JLink驅(qū)動(dòng)后,一般賣家都會(huì)提供JLink的驅(qū)動(dòng)程序,驅(qū)動(dòng)安裝完成后就可以下載調(diào)試程序了。

406f8a7e-4afe-11ed-a3b6-dac502259ad0.pnghttps://www.segger.com/downloads/jlink/

當(dāng)然我們現(xiàn)在要使用JLink的RTT功能(實(shí)時(shí)傳輸Real Time Transfer,可不是RT-Thread操作系統(tǒng)),就需要在官網(wǎng)下載完整的Jlink包,最新版本的是V7.52版本的,當(dāng)然別的版本也可以。下載完成后直接安裝可以了。安裝完成后你會(huì)在你的安裝目錄下看到如下內(nèi)容:

40b011f2-4afe-11ed-a3b6-dac502259ad0.pngJLink安裝目錄

3、移植RTT

安裝完成就好辦了,RTT源碼包就在我們剛剛安裝的JLINK驅(qū)動(dòng)的目錄里面。我的目錄是:D:SoftwareSEGGERJLink_V644bSamplesRTT

4138128c-4afe-11ed-a3b6-dac502259ad0.png

解壓后具體的目錄是:D:SoftwareSEGGERJLink_V644bSamplesRTTSEGGER_RTT_V644bRTT

41762892-4afe-11ed-a3b6-dac502259ad0.png

然后將這個(gè)RTT文件夾復(fù)制到我們的編寫程序的工程文件夾中

4195b64e-4afe-11ed-a3b6-dac502259ad0.png

然后在項(xiàng)目中新建一個(gè)RTT分組,并將RTT文件夾中的兩個(gè).c文件添加進(jìn)來。

41b60a0c-4afe-11ed-a3b6-dac502259ad0.png41cf39a0-4afe-11ed-a3b6-dac502259ad0.png

當(dāng)然還要記得添加RTT的頭文件路徑

426eb250-4afe-11ed-a3b6-dac502259ad0.png

到這里基本就移植成功了,是不是很簡單,就是把RTT的源碼添加到工程中即可,完全不需要修改別的什么操作。

4、RTT打印輸出

接下來就可以打印輸出了。

#include"sys.h"
#include"delay.h"
#include"usart.h"
#include"led.h"
#include"SEGGER_RTT.h"

intmain(void)
{
HAL_Init();//初始化HAL庫
Stm32_Clock_Init(336,8,2,7);//設(shè)置時(shí)鐘,168Mhz
delay_init(168);//初始化延時(shí)函數(shù)
LED_Init();//初始化LED

while(1)
{
SEGGER_RTT_printf(0,"zhiguoxin666
");
}
}
427e302c-4afe-11ed-a3b6-dac502259ad0.png

編譯沒有錯(cuò)誤之后連接好下載器

42ae91a4-4afe-11ed-a3b6-dac502259ad0.png連接好硬件 4301df9e-4afe-11ed-a3b6-dac502259ad0.png配置為SW模式

之后打開JLink安裝目錄下的JLinkRTTViewer.exe

43487bc0-4afe-11ed-a3b6-dac502259ad0.png

按照如下配置

43bab3f2-4afe-11ed-a3b6-dac502259ad0.png

將代碼下載到單片機(jī)中就可以看到已經(jīng)完美的打印了。

43d27a96-4afe-11ed-a3b6-dac502259ad0.png

5、RTT的使用技巧

1、RTT緩沖大小

有時(shí)候我們發(fā)現(xiàn)我們的信息不能完全的打印出來,可能是因?yàn)榫彌_不夠,默認(rèn)緩沖區(qū)大小事1K字節(jié),如果不夠可以改大一點(diǎn)。

43f48ff0-4afe-11ed-a3b6-dac502259ad0.png默認(rèn)1024字節(jié)

2、多虛擬端口使用

RTT支持向不同的虛擬端口中打印信息,使用方法如下。

首先在RTT Viewer軟件中分別打開三個(gè)虛擬端口:

4408d62c-4afe-11ed-a3b6-dac502259ad0.png

編寫代碼

while(1)
{
SEGGER_RTT_SetTerminal(0);
SEGGER_RTT_printf(0,"zhiguoxin666,SEGGERRTTTerminal0!
");
SEGGER_RTT_SetTerminal(1);
SEGGER_RTT_printf(0,"zhiguoxin666,SEGGERRTTTerminal1!
");
SEGGER_RTT_SetTerminal(2);
SEGGER_RTT_printf(0,"zhiguoxin666,SEGGERRTTTerminal2!
");
delay_ms(1000);
}

編譯、鏈接、下載,觀察現(xiàn)象:

44323e18-4afe-11ed-a3b6-dac502259ad0.png窗口0 445ee44a-4afe-11ed-a3b6-dac502259ad0.png窗口1 447b8276-4afe-11ed-a3b6-dac502259ad0.png窗口2

3、修改打印字符顏色

RTT支持不同顏色的字符顯示。

449de262-4afe-11ed-a3b6-dac502259ad0.png

時(shí)用時(shí)在字符串前面加上對應(yīng)顏色的宏定義就可以了。

while(1)
{
SEGGER_RTT_SetTerminal(0);
SEGGER_RTT_printf(0,RTT_CTRL_TEXT_RED"zhiguoxin666,SEGGERRTTTerminal0!
");
SEGGER_RTT_SetTerminal(1);
SEGGER_RTT_printf(0,RTT_CTRL_TEXT_GREEN"zhiguoxin666,SEGGERRTTTerminal1!
");
SEGGER_RTT_SetTerminal(2);
SEGGER_RTT_printf(0,RTT_CTRL_TEXT_BLUE"zhiguoxin666,SEGGERRTTTerminal2!
");
delay_ms(1000);
}

編譯、鏈接、下載,觀察現(xiàn)象:

44d7b29e-4afe-11ed-a3b6-dac502259ad0.png紅色 44eb4638-4afe-11ed-a3b6-dac502259ad0.png綠色 451a267e-4afe-11ed-a3b6-dac502259ad0.png藍(lán)色

4、使用printf重定向

項(xiàng)目中使用printf的地方非常多,如果可以直接修改printf重定向到RTT組件,則會(huì)非常方便。使用的方法是直接使用RTT提供的API實(shí)現(xiàn)fputc。

4532a67c-4afe-11ed-a3b6-dac502259ad0.png原子的例程

重定義fputc函數(shù)

//重定義fputc函數(shù)
intfputc(intch,FILE*f)
{
SEGGER_RTT_PutChar(0,ch);
returnch;
}

替換之前的代碼:

while(1)
{
printf("zhiguoxin666,printfSEGGERRTTTerminal!
");
delay_ms(1000);
}

編譯、鏈接、下載

45d6ae7a-4afe-11ed-a3b6-dac502259ad0.png

結(jié)語:RTT和USRAT各有優(yōu)點(diǎn),要根據(jù)不同的情況選擇,如果遇到一個(gè)顯示項(xiàng)目沒有預(yù)留串口用來調(diào)試打印信息,可以用這個(gè)的方法。當(dāng)然打印調(diào)試還有很多方法,這只是其中的一種,如果你還有更好的方法,歡迎評論區(qū)留言喲~

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628346
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1533

    瀏覽量

    75456
  • 調(diào)試器
    +關(guān)注

    關(guān)注

    1

    文章

    297

    瀏覽量

    23568
  • Jlink
    +關(guān)注

    關(guān)注

    5

    文章

    111

    瀏覽量

    37517

原文標(biāo)題:教你把JLink變成串口調(diào)試助手

文章出處:【微信號(hào):嵌入式情報(bào)局,微信公眾號(hào):嵌入式情報(bào)局】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    DM8168的OSD算法中,用Vps_printf()不能輸出打印信息

    在DM8168的dsp端加入自己的算法,但是現(xiàn)在在調(diào)試發(fā)現(xiàn),算法內(nèi)部不能輸出打印信息。 在TI自己提供的OSD算法下用Vps_printf加入打印信息進(jìn)行測試,在
    發(fā)表于 05-31 08:59

    GT_Trace()沒有打印信息

    個(gè)函數(shù)中我用GT_Trace()打印信息,編譯鏈接通過,但我運(yùn)行CE_DEBUG=2 ./XX 后,發(fā)現(xiàn).C文件的這個(gè)函數(shù)中的GT_Trace()并沒有打印信息,而算法文件中可以正常打印信息,這是
    發(fā)表于 06-21 15:28

    串口打印信息操作步驟分享!

    打印調(diào)試信息是編程技術(shù)中最基礎(chǔ)也是十分重要部分。雖然單片機(jī)不能像計(jì)算機(jī)那樣有類似控制臺(tái)打印信息的功能,但是單片機(jī)同樣可以通過串口打印信息。在
    發(fā)表于 09-30 04:37

    如何利用串口輸出printf的打印信息

    PC機(jī)上,printf輸出到顯示設(shè)備,在嵌入式linux系統(tǒng),一般利用printf輸出調(diào)試信息,需要重定向到串口。以AT91RM9200為例,簡要說明如何利用串口輸出printf的打印信息。 在
    發(fā)表于 11-04 07:10

    何用Printf() 函數(shù)打印信息?

    何用Printf() 函數(shù)打印信息?
    發(fā)表于 12-15 07:56

    如何自制一個(gè)基于jlink的無線調(diào)試器?

    如何自制一個(gè)基于jlink的無線調(diào)試器
    發(fā)表于 01-18 06:47

    jlink-v8調(diào)試器jlink接口與swd接口有什么不同呢

    mdk集成開發(fā)環(huán)境境中,jlink-v8調(diào)試器jlink接口與swd接口有什么不同呢?
    發(fā)表于 08-29 14:18

    Nuclei_Studio運(yùn)行N101_irqc_demo串口不顯示打印信息怎么解決?

    使用MCU200T開發(fā)板和蜂鳥調(diào)試器調(diào)試N101,Nuclei_Studio 運(yùn)行N101_irqc_demo過程中正常,但是串口不顯示打印信息,請問有人知道嗎?
    發(fā)表于 08-12 08:23

    jlink-AXD仿真調(diào)試實(shí)驗(yàn)手冊

    jlink-AXD仿真實(shí)驗(yàn)調(diào)試手冊 1.實(shí)驗(yàn)設(shè)備:TQ2440開發(fā)板一套,Jlink-V6,Jtag 板,ADS編譯,AXD調(diào)試器。2.
    發(fā)表于 03-11 09:06 ?79次下載

    Microchip調(diào)試器(MDB)用戶指南

    Microchip調(diào)試器(MDB)是Microchip硬件和軟件開發(fā)工具的命令行調(diào)試器接口。作為Microchip MPLAB? X集成開發(fā)環(huán)境(Integrated Development Environment,IDE)圖形界面的替代,MDB通過命令提示符接口
    發(fā)表于 05-12 09:46 ?19次下載

    STM32F411Cx 401Cx最小系統(tǒng) JLINK調(diào)試器開源

    電子發(fā)燒友網(wǎng)站提供《STM32F411Cx 401Cx最小系統(tǒng) JLINK調(diào)試器開源.zip》資料免費(fèi)下載
    發(fā)表于 08-09 09:26 ?2次下載
    STM32F411Cx 401Cx最小系統(tǒng) <b class='flag-5'>JLINK</b><b class='flag-5'>調(diào)試器</b>開源

    MPLAB Snap在線調(diào)試器信息手冊

    電子發(fā)燒友網(wǎng)站提供《MPLAB Snap在線調(diào)試器信息手冊.pdf》資料免費(fèi)下載
    發(fā)表于 09-21 10:13 ?0次下載
    MPLAB Snap在線<b class='flag-5'>調(diào)試器</b><b class='flag-5'>信息</b>手冊

    Microchip調(diào)試器(MDB)用戶指南

    Microchip調(diào)試器(MDB)是Microchip硬件和軟件開發(fā)工具的命令行調(diào)試器接口。作為Microchip MPLAB? X集成開發(fā)環(huán)境(Integrated Development Environment,IDE)圖形界面的替代,MDB通過命令提示符接口
    發(fā)表于 09-22 17:53 ?0次下載
    Microchip<b class='flag-5'>調(diào)試器</b>(MDB)用戶指南

    調(diào)試器連接MCU不穩(wěn)定怎么辦?

    有沒有小伙伴遇到使用GDlink或者Jlink調(diào)試GD32 MCU的時(shí)候出現(xiàn)不穩(wěn)定的情況,剛要發(fā)現(xiàn)問題時(shí)調(diào)試器和MCU斷開連接了,這個(gè)時(shí)候可能抓狂的心都有了。今天就教給大家?guī)讉€(gè)提高調(diào)試器
    的頭像 發(fā)表于 02-21 09:44 ?687次閱讀
    <b class='flag-5'>調(diào)試器</b>連接MCU不穩(wěn)定怎么辦?

    jlink調(diào)試器的工作原理

    我們平時(shí)使用的jlink調(diào)試器就是使用JTAG接口,JTAG以前是用于測試芯片的一種通信方式,現(xiàn)在部分ARM或者DSP等都存在JTAG接口,這樣我們就可以通過JTAG接口訪問CPU以及其內(nèi)部狀態(tài)信息等。
    的頭像 發(fā)表于 03-08 12:32 ?2341次閱讀
    <b class='flag-5'>jlink</b><b class='flag-5'>調(diào)試器</b>的工作原理