伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RT-Thread 的靈魂伴侶 | 技術集結

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

掃碼添加小助手

加入工程師交流群

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

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

一、下載口也可以同時當串口用會有多爽

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

二、SEGGER RTT+MKLink,讓串口調試真正自由

嵌入式開發中,我們總是離不開“串口打印”來調試。

但傳統串口調試存在很多明顯的痛點:

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

如何打破這些痛點?

SEGGER RTT + MKLink完美結合了雙方的優勢:

  • SEGGER RTT:提供高速、非侵入式的數據傳輸;
  • MKLink:將 RTT 通道虛擬為標準 USB CDC 串口,不再占用 MCU 的串口!

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

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

1、SEGGER RTT是什么?

RTT,全稱Real Time Transfer(實時傳輸),是一種無需中斷 MCU 程序執行,就能實現數據與主機交互的調試技術。

它使用一種內存共享機制,將 MCU 內部的數據實時“搬運”到 PC 上。

形象理解:

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

2、SEGGER RTT 的基本工作原理

在 MCU RAM 中,有一個非常重要的結構體:

_SEGGER_RTT 控制塊

它的作用是:

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

收發數據過程:

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

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


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

3、SEGGER RTT怎么用?

只需簡單三步:

步驟一:集成 RTT 源碼

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

如我電腦上的路徑:

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){

}
}

步驟三:連接調試工具

  • 如果使用傳統 J-Link,只能用 RTT Viewer 上位機
  • 如果用 MKLink ,可以用任意串口助手直接訪問 RTT 數據!

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

MKLink突破傳統,打通了 RTT 和通用串口調試工具之間的隔閡,直接把 RTT 數據轉發到USB CDC 虛擬串口,讓 MCU 仿佛接了一個超級快的“軟串口”!

MCU端:

  • 繼續使用 RTT 庫發送日志,不需要改變一行代碼。

MKLink端:

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

PC端:

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

MKLink 數據流示意圖:


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

效果總結:

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

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

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

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

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

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

V2和V3會彈出兩個USB串行設備端口號,分別是USB轉串口和虛擬串口

V4會彈出三個USB串行設備端口號,分別是USB轉串口、USB轉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處,可以通過設置搜尋的地址和大小來重新啟動MicroLink的RTT功能。

2、固定_SEGGER_RTT的地址的方法

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

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

代碼如下,方便直接復制:

#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,添加紅框中的代碼,下載器上電會自動執行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.勾選以下選項:

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

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

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

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

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

步驟二:添加stdout_putchar()

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

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

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

方法一:安裝SEGGER_RTT軟件包

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

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

方法二:安裝agile_console軟件包

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

步驟一:安裝軟件包

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

步驟二:單片機添加SEGGER_RTT源碼

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

如我電腦上的路徑:

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

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

步驟三:單片機添加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);

六、用戶真實評價


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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 硬件
    +關注

    關注

    12

    文章

    3602

    瀏覽量

    69075
  • 串口
    +關注

    關注

    15

    文章

    1624

    瀏覽量

    83021
  • 實時傳輸
    +關注

    關注

    0

    文章

    14

    瀏覽量

    6764
  • RT-Thread
    +關注

    關注

    32

    文章

    1624

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RT-Thread Vector軟件包:嵌入式開發的動態數組容器 | 技術集結

    RT-Thread Vector軟件包:嵌入式開發的動態數組容器 | 技術集結
    的頭像 發表于 01-25 09:33 ?5479次閱讀
    <b class='flag-5'>RT-Thread</b> Vector軟件包:嵌入式開發的動態數組容器 | <b class='flag-5'>技術</b><b class='flag-5'>集結</b>

    RT-Thread編程指南

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

    RT-Thread全球技術大會:RT-Thread開源重塑軟件發展新生態

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

    RT-Thread全球技術大會:螢石研發團隊使用RT-Thread技術挑戰

    RT-Thread全球技術大會:研發團隊使用RT-Thread技術挑戰 ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 11:36 ?2335次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術</b>大會:螢石研發團隊使用<b class='flag-5'>RT-Thread</b>的<b class='flag-5'>技術</b>挑戰

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

    2022 RT-Thread全球技術大會:RT-Thread在攝像頭及IoT設備上的實踐經驗分享
    的頭像 發表于 05-27 11:08 ?1943次閱讀
    2022 <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術</b>大會:螢石EZIOT SDK對<b class='flag-5'>RT-Thread</b>的支持

    RT-Thread全球技術大會:RT-Thread Smart更好的兼容Linux生態

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

    RT-Thread全球技術大會:Kconfig在RT-Thread中的工作機制

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

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

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

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

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

    RT-Thread全球技術大會:RT-Thread對POSIX的實現情況介紹

    RT-Thread全球技術大會:RT-Thread對POSIX的實現情況介紹 ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 16:52 ?2734次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術</b>大會:<b class='flag-5'>RT-Thread</b>對POSIX的實現情況介紹

    RT-Thread學習筆記 RT-Thread的架構概述

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

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發表于 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 上手指南
    發表于 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 介紹與移植
    發表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    基于RT-Thread Studio學習

    前期準備:從官網下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學習之旅。
    的頭像 發表于 05-15 11:00 ?6488次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學習