91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

RT-Thread 的靈魂伴侶 | 技術(shù)集結(jié)

RT-Thread官方賬號 ? 2026-03-23 19:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

RT-Thread正式啟動硬件產(chǎn)品生態(tài)共建計(jì)劃"你有創(chuàng)意,我?guī)湍阃茝V",我們尋找那些藏在工作臺、實(shí)驗(yàn)室和創(chuàng)客空間的嵌入式硬件創(chuàng)意——無論是一塊開發(fā)板、一個智能工具,還是一套完整的解決方案。我們誠摯邀請社區(qū)開發(fā)者、創(chuàng)客和硬件公司,將您的創(chuàng)意原型帶到RT-Thread生態(tài),也歡迎已有成熟產(chǎn)品直接入駐!!歡迎加入我們的硬件生態(tài)計(jì)劃,可發(fā)送作品(建議包含:產(chǎn)品介紹、演示視頻/圖片、技術(shù)亮點(diǎn)、您的介紹)郵件至hardware@rt-thread.com。

今天給大家介紹一下MicroKeen(MKLink)的使用方法,以下來自MKLink創(chuàng)作者的作品內(nèi)容,歡迎支持!

一、下載口也可以同時(shí)當(dāng)串口用會有多爽

  • 不需要USB 轉(zhuǎn)串口工具 + 杜邦線接線
  • printf直接通過下載口輸出到USB虛擬串口
  • 仿真邊打印,互不影響

二、SEGGER RTT+MKLink,讓串口調(diào)試真正自由

嵌入式開發(fā)中,我們總是離不開“串口打印”來調(diào)試。

但傳統(tǒng)串口調(diào)試存在很多明顯的痛點(diǎn):

  • 速度慢:輸出數(shù)據(jù)卡頓,占用CPU時(shí)間,不能在中斷中使用;
  • 硬件占用:需要額外占用 MCUUART 接口資源;
  • 接線麻煩:需要 USB 轉(zhuǎn)串口工具 + 杜邦線接線,步驟繁瑣;
  • 資源受限:串口數(shù)量有限,調(diào)試與功能常常沖突。

如何打破這些痛點(diǎn)?

SEGGER RTT + MKLink完美結(jié)合了雙方的優(yōu)勢:

  • SEGGER RTT:提供高速、非侵入式的數(shù)據(jù)傳輸;
  • MKLink:將 RTT 通道虛擬為標(biāo)準(zhǔn) USB CDC 串口,不再占用 MCU 的串口!

讓調(diào)試既擁有 RTT 的性能,又能使用任意串口助手,真正做到“即插即用,自由暢快”!

三、一分鐘了解 SEGGER RTT 是什么、怎么用

1、SEGGER RTT是什么?

RTT,全稱Real Time Transfer(實(shí)時(shí)傳輸),是一種無需中斷 MCU 程序執(zhí)行,就能實(shí)現(xiàn)數(shù)據(jù)與主機(jī)交互的調(diào)試技術(shù)。

它使用一種內(nèi)存共享機(jī)制,將 MCU 內(nèi)部的數(shù)據(jù)實(shí)時(shí)“搬運(yùn)”到 PC 上。

形象理解:

就像你在 MCU 的 RAM 里放了個“郵箱”,PC 隨時(shí)來收信,MCU 照常干活,互不打擾。

2、SEGGER RTT 的基本工作原理

在 MCU RAM 中,有一個非常重要的結(jié)構(gòu)體:

_SEGGER_RTT 控制塊

它的作用是:

  • 保存多個UpBuffer(MCU PC)DownBuffer(PC MCU)的信息;
  • 包括每個緩沖區(qū)的起始地址、大小、寫指針、讀指針等。

收發(fā)數(shù)據(jù)過程:

  • MCU發(fā)送數(shù)據(jù)? 把數(shù)據(jù)memcpy拷貝到UpBuffer的空閑區(qū)域;
  • PC接收數(shù)據(jù)? 通過MKLink 讀取 UpBuffer 的數(shù)據(jù);
  • PC發(fā)送指令? 通過MKLink 把數(shù)據(jù)寫入 DownBuffer;
  • MCU讀取指令? 從 DownBuffer 中memcpy出來。

由于只是內(nèi)存拷貝,整個收發(fā)過程極快,微秒級完成,不會打斷 MCU 正常工作。


eba579e0-26aa-11f1-96ea-92fbcf53809c.jpg

3、SEGGER RTT怎么用?

只需簡單三步:

步驟一:集成 RTT 源碼

從 SEGGER J-Link 安裝目錄Samples/RTT復(fù)制以下文件到工程中,并添加頭文件路徑。

如我電腦上的路徑:

C:\Program Files (x86)\SEGGER\JLink_V632f\Samples\RTT

ebb1e6bc-26aa-11f1-96ea-92fbcf53809c.jpg


步驟二:輸出日志到 RTT

#include"SEGGER_RTT.h"
intmain(void)
{
SEGGER_RTT_Init();
SEGGER_RTT_printf(0,"hello RTT\n");
while(1){

}
}

步驟三:連接調(diào)試工具

  • 如果使用傳統(tǒng) J-Link,只能用 RTT Viewer 上位機(jī)
  • 如果用 MKLink ,可以用任意串口助手直接訪問 RTT 數(shù)據(jù)!

四、MKLink :釋放 SEGGER RTT的真正威力

MKLink突破傳統(tǒng),打通了 RTT 和通用串口調(diào)試工具之間的隔閡,直接把 RTT 數(shù)據(jù)轉(zhuǎn)發(fā)到USB CDC 虛擬串口,讓 MCU 仿佛接了一個超級快的“軟串口”!

MCU端:

  • 繼續(xù)使用 RTT 庫發(fā)送日志,不需要改變一行代碼。

MKLink端:

  • 通過 USB CDC 映射成標(biāo)準(zhǔn)串口;
  • 自動掃描 MCU 內(nèi)存中_SEGGER_RTT控制塊地址(如 0x20000000);
  • 直接讀寫 UpBuffer / DownBuffer;
  • 完美支持雙向通信

PC端:

  • 用你最喜歡的串口助手直接連 MKLink串口,爽快收發(fā)!

MKLink 數(shù)據(jù)流示意圖:


ebbda3d0-26aa-11f1-96ea-92fbcf53809c.jpg

效果總結(jié):

  • 不再局限于官方 Viewer;
  • 不再受限于波特率;
  • 不再需要額外串口硬件和線纜;
  • 打開任意串口助手即用,極致靈活!

五、多種使用 SEGGER RTT 功能的方法

1、如何開啟MKLink的SEGGER RTT功能

步驟一:找到MKLink 的 USB CDC 虛擬串口

使用USB TypeC數(shù)據(jù)線與MKLink連接以后,電腦設(shè)備端會彈出三個設(shè)備:

ebc79822-26aa-11f1-96ea-92fbcf53809c.png

V2和V3會彈出兩個USB串行設(shè)備端口號,分別是USB轉(zhuǎn)串口和虛擬串口

V4會彈出三個USB串行設(shè)備端口號,分別是USB轉(zhuǎn)串口、USB轉(zhuǎn)485端口和虛擬串口

打開虛擬串口后,下載器會自動打印如下信息:

ebd94496-26aa-11f1-96ea-92fbcf53809c.png

V4版本可以通過屏幕界面,來高速你打開的是什么端口,分別打開三個串口號,效果如下:


步驟二:使用串口助手類工具訪問 MKLink 的 USB CDC 虛擬串口

比如使用SSCOM,連接MicroLink的串口,輸入以下指令:

RTTView.start(0x20000000,1024,0)

  • 0x20000000:搜索RTT控制塊的起始地址;
  • 1024:搜尋范圍大小;
  • 0:啟動RTT的通道。

ebe3b9a8-26aa-11f1-96ea-92fbcf53809c.jpg

_SEGGER_RTT控制塊地址可以通過查看MDK編譯生成的.map文件來查找,如下:

ebef5c86-26aa-11f1-96ea-92fbcf53809c.jpg

可知,_SEGGER_RTT在地址0x20000040處,可以通過設(shè)置搜尋的地址和大小來重新啟動MicroLink的RTT功能。

2、固定_SEGGER_RTT的地址的方法

步驟一:打開SEGGER_RTT.c,添加紅框中的代碼,宏SEGGER_RTT_OPS_ADDR可以將_SEGGER_RTT的地址固定在0x20000000

ebf920f4-26aa-11f1-96ea-92fbcf53809c.png

代碼如下,方便直接復(fù)制:

#defineSEGGER_RTT_OPS_ADDR 0X20000200
#define__ARM_AT(x)".ARM.__at_"#x
#defineARM_AT(x) __ARM_AT(x)
#ifdefined(__CC_ARM) // ARM Compiler 5 (AC5)
#defineSEGGER_RTT_SECTION __attribute__((at(BOOT_FLASH_OPS_ADDR)))
#elifdefined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6000000) // ARM Compiler 6 (AC6)
#defineSEGGER_RTT_SECTION __attribute__((section(ARM_AT(SEGGER_RTT_OPS_ADDR))))
#elifdefined(__GNUC__) // GCC
#defineSEGGER_RTT_SECTION __attribute__((section(".segger_rtt_ops"), used, aligned(4)))
#else
#defineSEGGER_RTT_SECTION
#endif
SEGGER_RTT_SECTION
SEGGER_RTT_PUT_CB_SECTION(SEGGER_RTT_CB_ALIGN(SEGGER_RTT_CB _SEGGER_RTT));

3、上電自動開啟SEGGER_RTT功能的方法

步驟一:打開U盤中python文件夾下的default_config.py,添加紅框中的代碼,下載器上電會自動執(zhí)行default_config.py腳本。

ec053ea2-26aa-11f1-96ea-92fbcf53809c.png

4、MDK中將printf重定向到SEGGER_RTT通道的方法

步驟一:RTE配置

1.打開RTE 配置窗口(菜單:Project -> Manage -> Run-Time Environment)。

ec109144-26aa-11f1-96ea-92fbcf53809c.png

2.勾選以下選項(xiàng):

  • CMSIS-Compiler下勾選CORE;
  • STDOUT(API)下勾選Custom;

如果你在RTE中找不到CMSIS-Compiler,說明你的MDK版本較低——如果不想升級MDK,則可以通過下面的鏈接從官方直接下載對應(yīng)的cmsis-pack

https://www.keil.arm.com/packs/cmsis-compiler-arm/

或者老版本的cmsis-pack中,找到Compiler

ec1d0fdc-26aa-11f1-96ea-92fbcf53809c.png

步驟二:添加stdout_putchar()

在代碼中實(shí)現(xiàn)stdout_putchar()函數(shù)——用它來把printf重定向到RTT通道:

intstdout_putchar(intch)
{
SEGGER_RTT_PutChar(0, ch);
returnch;
}

5、將 RT-Thread 系統(tǒng)命令行重定向到RTT通道的方法

方法一:安裝SEGGER_RTT軟件包

SEGGER_RTT軟件包是將 RT-Thread 的msh重定向到SEGGER RTT

ec297934-26aa-11f1-96ea-92fbcf53809c.png

方法二:安裝agile_console軟件包

agile_console軟件包可以將 RT-Thread 的msh重定向到多個端口,比如可以不影響原先uart打印的基礎(chǔ)上,再增加一路RTT端口,比較適合兩種方式需要同時(shí)使用的場景。

步驟一:安裝軟件包

ec3689b2-26aa-11f1-96ea-92fbcf53809c.png

步驟二:單片機(jī)添加SEGGER_RTT源碼

從 SEGGER J-Link 安裝目錄Samples/RTT復(fù)制以下文件到工程中,并添加頭文件路徑。

如我電腦上的路徑:

C:\Program Files (x86)\SEGGER\JLink_V632f\Samples\RTT

ec495a56-26aa-11f1-96ea-92fbcf53809c.png

步驟三:單片機(jī)添加agile軟件包的適配代碼

添加一個agile_console_rtt_be.c文件,代碼如下:

#include
#include
#include"SEGGER_RTT.h"
staticstructagile_console_backend_console_backend= {0};

staticvoidrtt_backend_output(rt_device_tdev,constuint8_t*buf,intlen)
{
SEGGER_RTT_Write(0,buf,len);
}

staticintrtt_backend_read(rt_device_tdev,uint8_t*buf,intlen)
{
return SEGGER_RTT_Read(0,buf, len);
}

staticvoidsegger_rtt_check(void)
{
while(SEGGER_RTT_HasKey())
{
agile_console_wakeup();
}
}

staticintagile_console_rtt_init(void)
{
SEGGER_RTT_Init();
rt_thread_idle_sethook(segger_rtt_check);

_console_backend.output = rtt_backend_output;
_console_backend.read = rtt_backend_read;

agile_console_backend_register(&_console_backend);
return0;
}
INIT_BOARD_EXPORT(agile_console_rtt_init);

六、用戶真實(shí)評價(jià)


ec54f71c-26aa-11f1-96ea-92fbcf53809c.pngec5f3dee-26aa-11f1-96ea-92fbcf53809c.png

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

    關(guān)注

    12

    文章

    3603

    瀏覽量

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

    關(guān)注

    15

    文章

    1624

    瀏覽量

    83028
  • 實(shí)時(shí)傳輸
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    6764
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1625

    瀏覽量

    45002
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    RT-Thread Vector軟件包:嵌入式開發(fā)的動態(tài)數(shù)組容器 | 技術(shù)集結(jié)

    RT-Thread Vector軟件包:嵌入式開發(fā)的動態(tài)數(shù)組容器 | 技術(shù)集結(jié)
    的頭像 發(fā)表于 01-25 09:33 ?5480次閱讀
    <b class='flag-5'>RT-Thread</b> Vector軟件包:嵌入式開發(fā)的動態(tài)數(shù)組容器 | <b class='flag-5'>技術(shù)</b><b class='flag-5'>集結(jié)</b>

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國內(nèi)有較大影響力的開源實(shí)時(shí)操作系統(tǒng),本文是RT-Thread實(shí)時(shí)操作系統(tǒng)的編程指南
    發(fā)表于 11-26 16:06 ?0次下載

    RT-Thread全球技術(shù)大會:RT-Thread開源重塑軟件發(fā)展新生態(tài)

    RT-Thread全球技術(shù)大會:RT-Thread開源重塑軟件發(fā)展新生態(tài),市場空間巨大,以開放的心態(tài)不斷提升技術(shù)水平,大膽創(chuàng)新,迎接挑戰(zhàn)! ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 10:47 ?1919次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:<b class='flag-5'>RT-Thread</b>開源重塑軟件發(fā)展新生態(tài)

    RT-Thread全球技術(shù)大會:螢石研發(fā)團(tuán)隊(duì)使用RT-Thread技術(shù)挑戰(zhàn)

    RT-Thread全球技術(shù)大會:研發(fā)團(tuán)隊(duì)使用RT-Thread技術(shù)挑戰(zhàn) ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 11:36 ?2342次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:螢石研發(fā)團(tuán)隊(duì)使用<b class='flag-5'>RT-Thread</b>的<b class='flag-5'>技術(shù)</b>挑戰(zhàn)

    2022 RT-Thread全球技術(shù)大會:螢石EZIOT SDK對RT-Thread的支持

    2022 RT-Thread全球技術(shù)大會:RT-Thread在攝像頭及IoT設(shè)備上的實(shí)踐經(jīng)驗(yàn)分享
    的頭像 發(fā)表于 05-27 11:08 ?1945次閱讀
    2022 <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:螢石EZIOT SDK對<b class='flag-5'>RT-Thread</b>的支持

    RT-Thread全球技術(shù)大會:RT-Thread Smart更好的兼容Linux生態(tài)

    RT-Thread全球技術(shù)大會:RT-Thread Smart更好的兼容Linux生態(tài) ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 14:31 ?2831次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:<b class='flag-5'>RT-Thread</b> Smart更好的兼容Linux生態(tài)

    RT-Thread全球技術(shù)大會:Kconfig在RT-Thread中的工作機(jī)制

    RT-Thread全球技術(shù)大會:Kconfig在RT-Thread中的工作機(jī)制 ? ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 14:49 ?2412次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:Kconfig在<b class='flag-5'>RT-Thread</b>中的工作機(jī)制

    RT-Thread全球技術(shù)大會:在RT-Thread上編寫測試用例

    RT-Thread全球技術(shù)大會:在RT-Thread上編寫測試用例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:28 ?2181次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:在<b class='flag-5'>RT-Thread</b>上編寫測試用例

    RT-Thread全球技術(shù)大會:RT-Thread測試用例集合案例

    RT-Thread全球技術(shù)大會:RT-Thread測試用例集合案例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:34 ?2883次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:<b class='flag-5'>RT-Thread</b>測試用例集合案例

    RT-Thread全球技術(shù)大會:RT-Thread對POSIX的實(shí)現(xiàn)情況介紹

    RT-Thread全球技術(shù)大會:RT-Thread對POSIX的實(shí)現(xiàn)情況介紹 ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:52 ?2736次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:<b class='flag-5'>RT-Thread</b>對POSIX的實(shí)現(xiàn)情況介紹

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡介 作為一名 RTOS 的初學(xué)者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?5968次閱讀
    <b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記 <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發(fā)表于 02-22 18:23 ?10次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?6491次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學(xué)習(xí)