91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

NXP i.MX RT1060移植TinyUSB:快速擴展大量USB Class示例

恩智浦MCU加油站 ? 來源: 恩智浦MCU加油站 ? 2025-05-15 09:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

為啥是TinyUSB?給強大的RT配個輕巧的USB棧!

USB這個讓我們方便快捷的接口,幾乎無處不在。在嵌入式世界里,尤其是用上了像NXP i.MX RT這樣性能強勁的跨界MCU,我們自然希望它能輕松駕馭USB通信。官方所提供的示例只涵蓋了USB基礎類,對于諸如ECM、NCM等特定類的開發而言,若要從頭開始構建,有可能會拖延客戶項目的推進。

這時候,TinyUSB閃亮登場!

想象一下,一個開源(MIT 協議)、輕量級、跨平臺、示例友好的USB協議棧,是不是有點小激動?

選擇TinyUSB的幾大優勢:

  • 輕巧高效:資源占用小,對內存和 Flash 都很友好。對于性能本就充裕的RT系列,更是能跑得飛起

  • 功能全面:支持常見的設備類(CDC, MSC, HID, MIDI, Vendor等)和主機功能,甚至復雜的復合設備也不在話下。你想讓你的RT板子變成U盤、虛擬串口、鍵盤鼠標?TinyUSB都能幫你搞定

  • 易于移植:清晰的架構設計和OSAL,無論是裸機還是RTOS環境,移植起來都相對順暢

  • 社區活躍 & 開源免費:MIT協議方便客戶使用。同時提供了大量的例程,即使是初學者也可以通過這個項目入門USB開發

所以,如果你想在你的NXP RT項目加上USB功能,或者學習一些特定class的開發,TinyUSB是一個值得嘗試的選擇。本文就將手把手帶你,在熟悉的MCUXpresso IDE環境下,完成TinyUSB的移植,讓你的RT開發板通過USB與世界自由溝通!

一、準備事項:裝備檢查

動手之前,確保你的“武器庫”齊全:

  • 硬件平臺:一塊NXPi.MX RT開發板,本文以RT1060-EVK為例,和能把它“安排”明白的調試器(JLink或LinkServer都行)。

  • 軟件工具

  • MCUXpresso IDE: NXP 的官方 IDE,我們的主戰場(版本越新越好)

  • Git: 版本控制神器,管理代碼和子模塊的必備佳品

  • Make: 構建工具,跑 TinyUSB 自帶腳本會用到

  • Python: 同樣是跑腳本用

開辟工作目錄并獲取TinyUSB源碼。創建項目文件夾,然后用 Git 初始化,拉取TinyUSB庫。

mkdir //TinyUSB_Porting
cd /c/TinyUSB_Porting
git init

把TinyUSB官方倉庫加進來,用子模塊的方式,既能保持項目整潔,又能方便地到最新版。

git submodule add https://github.com/hathach/tinyusb.git tinyusb

搞定!Tinyusb文件夾里現在就是協議棧的源碼和各種示例了。

22443cb8-3127-11f0-afc8-92fbcf53809c.png

二、小試牛刀:命令行下的“熱身運動

在直接跳進IDE的“大坑”之前,咱們先在命令行下跑個官方示例,確保TinyUSB和 NXP的底層驅動能跑通,能避免很多不必要的麻煩。

步驟1: 選個入門示例開動

TinyUSB 的examples/device 目錄下有很多好玩的示例。我們就選 cdc_msc 這個經典的“二合一”設備(虛擬串口 + U盤)開刀。

cd tinyusb/examples/device/cdc_msc

步驟2:TinyUSB獲取NXP的依賴項

TinyUSB支持很多芯片和開發板,對于NXP RT,它提供了腳本來自動下載 MCUXpresso SDK的相關驅動。

# 告訴 Make 我們用的是 RT1060EVK 板子
make BOARD=mimxrt1060_evk get-deps

這條命令會運行 tinyusb/tools/get_deps.py imxrt 腳本,把NXP RT系列需要的驅動文件從GitHub上扒下來,放到 inyusbhwmcu xpmcux-sdk目錄。

!!友情提示:NXP 的 Kinetis、LPC、MCX等系列需要用不同的參數去拉取各自的依賴包,別搞混了,對于同一個系列的MCU,只需要拉取一次就可以了。

步驟3: 編譯!看看會不會“炸”

是時候檢驗成果了。用Make命令編譯這個示例:

# 參數解釋:
# BOARD=mimxrt1060_evk - 目標板
# DEBUG=1 - 打開調試信息,方便看日志
# LOG=2 - 日志輸出級別
# LOGGER=rtt - 默認使用UART打印日志,也指定用 RTT 或者SWO
# PORT=1 - 多個USB Controller時可選
# SPEED=full - USB 全速模式 (也可以試試 high 高速)
make BOARD=mimxrt1060_evk DEBUG=1 LOG=2 LOGGER=rtt PORT=1 SPEED=full all

如果終端沒有噴出一堆錯誤,并且在 _build/mimxrt1060_evk目錄下看到了 .elf, .bin這些熟悉的身影,那么恭喜你,第一階段勝利!

2267a784-3127-11f0-afc8-92fbcf53809c.png

步驟4: 下載!是騾子是馬拉出來遛遛

把編譯好的固件燒錄到你的RT板子上,插上USB線(連接到板子的 USB Device 端口)。如果你的電腦成功識別出一個U盤,那就穩了!這證明TinyUSB和NXP底層驅動這對“CP”在你這塊板子上是能正常工作的。

三、主戰場:MCUXpresso IDE集成

熱身完畢,該進入主戰場——MCUXpresso IDE了。我們要把TinyUSB“塞”進一個標準的IDE工程里。

步驟1: 建立“根據地” (創建基礎工程)

在 IDE 里,為你的 RT MCU創建一個新的工程。你可以從 hello_world 這種簡單的 SDK 示例開始,或者干脆創建一個只包含必要驅動的空工程。確保這個基礎工程能獨立編譯、下載、運行。

步驟2: 給 TinyUSB 安個“家” (添加源碼文件夾)

為了不讓項目結構亂成一鍋粥,我們在 IDE 里給 TinyUSB 單獨創建一個“家”(源文件夾)。

1.右鍵項目-> New -> Source Folder。

2.取個名字,比如tinyusb。

步驟3: 搬運 TinyUSB 的“家當” (復制核心文件)

把之前 Git 下載的 tinyusb/src目錄下的核心文件復制到剛創建的 tinyusb 文件夾里。注意只選擇需要的device端代碼即可。主要包括:

  • src/common: 通用工具函數

  • src/device: USB 設備協議棧核心代碼

  • src/class: 你需要用到的 USB 功能類驅動(比如cdc, msc)

  • src/osal: 操作系統抽象層

  • src/portable/nxp/chipidea/ci_hs和nxp/ehci: NXP RT 芯片上USB 控制器的底層驅動

  • src/tusb.c, src/tusb.h:TinyUSB 的主入口和核心頭文件

  • src/tusb_option.h: 默認編譯選項

    22821baa-3127-11f0-afc8-92fbcf53809c.png

步驟4: 把“說明書”和“應用代碼”也拿過來 (復制配置和示例文件)

cdc_msc 示例能跑起來,還需要幾個關鍵的配置文件和應用層代碼。把它們從 examples/device/cdc_msc/src/ 復制到 IDE 項目的主源碼目錄(通常叫source 或src):

  • main.c: 示例的主函數(替換掉hello_world.c)

  • msc_disk.c / .h: U盤功能的底層存儲接口(你需要實現它來讀寫你的存儲器)

  • tusb_config.h: TinyUSB的配置文件。所有功能的開關、參數都在這里調

  • usb_descriptors.c / .h:USB設備的“身份證”——各種描述符。電腦就是靠這些信息來認識設備
步驟5: 板級支持包 (BSP) 文件別落下

示例代碼會調用TinyUSB重寫的板級初始化函數。檢查下 examples/device/cdc_msc/src/ 和 hw/bsp 目錄下類似 board_api.h family.c 這樣的文件,有的話也一并復制到你項目的board 或bsp目錄。

步驟6: 給編譯器“指路” (配置 IncludePaths)

現在文件都搬過來了,但編譯器還不知道去哪找頭文件。我們需要在 IDE 里配置包含路徑:

  • 右鍵項目-> Properties -> C/C++ Build -> Settings -> Tool Settings -> MCUC Compiler -> Includes

  • 點擊"Add...",把下面這些路徑加進去(根據實際項目結構可能需要微調)

229e7980-3127-11f0-afc8-92fbcf53809c.png

步驟7: 配置 PreprocessorDefines

TinyUSB 用宏定義來識別目標平臺和開關功能。我們需要告訴它現在是在為誰工作:

  • 右鍵項目-> Properties -> C/C++ Build -> Settings -> Tool Settings -> MCUC Compiler -> Preprocessor。

  • 點擊"Add...",添加以下宏定義:

  • CFG_TUSB_MCU=OPT_MCU_MIMXRT1XXX: 關鍵!這就是告訴 TinyUSB:“現在需要跑在 NXP RT 芯片上!”

  • 按需添加其他調試宏,比如 CFG_TUSB_DEBUG=2

22c4c4c8-3127-11f0-afc8-92fbcf53809c.png

步驟8: 配置“硬件接口” (Pin Mux 和 Clock)

別忘了硬件!它們負責開發板上的各種PINMUX,直接使用TinyUSB中:tinyusbhwspimxrtoardsmimxrt1060_evk下提供的配置替換即可!

22fff4f8-3127-11f0-afc8-92fbcf53809c.png

步驟9: 掃清“障礙” (處理沖突與缺失)

集成路上總會有些小坎坷:

  • SDK 組件缺失: 從hello_world工程開始移植TinyUSB可能會缺少相關組件,比如OCOTP,可以通過MCUXpressoIDE中的管理工具很方便的添加它們。

  • family.c和board_api.h的“戲份”: 這些文件通常負責板級的初始化(比如 board_init())。確保它們已經正確移植好!

4. TinyUSB配置文件和Class文件

  • tusb_config.h (協議棧的“控制面板”):

  • 這個文件用于TinyUSB的基礎配置。雖然有些配置(如MCU類型 CFG_TUSB_MCU)可能通過編譯器 -D參數傳入,但大部分基礎和類相關的配置都在這里完成。

  • usb_descriptors.c / .h (設備的“身份證”和“說明書”):

  • 這里定義了所有USB 描述符:設備描述符、配置描述符、接口描述符、端點描述符、字符串描述符等等。

  • class文件夾:參考cdc/msc,其他類型的示例移植方法也是類似的。

五、勝利收官:總結展望

恭喜!如果你一路跟著走到這里,并且成功讓你的NXP RT開發板在電腦上被識別為一個 USB disk 設備,那么你已經掌握了在MCUXpresso IDE環境下移植TinyUSB 的核心技巧。

23171d90-3127-11f0-afc8-92fbcf53809c.png

23313928-3127-11f0-afc8-92fbcf53809c.png

現在,RTMCU已經插上了TinyUSB的“翅膀”,可以更自由地翱翔在USB的世界里了。以此為起點,我們可以探索TinyUSB 支持的其他USB Class (HID, MIDI, 網卡等)、將TinyUSB集成到你的實際項目中,實現更復雜的USB功能或者host端協議棧!這些就留給感興趣的小伙伴來嘗試了!

[參考鏈接]:

  1. https://github.com/hathach?/tinyusb

  2. https://docs.tinyusb.org/en/stable/r?eference/getting_started.html

作者:Gavin Jia

恩智浦MCU加油站

恩智浦半導體NXP Semiconductors N.V.(納斯達克股票代碼:NXPI)是汽車、工業物聯網、移動設備和通信基礎設施市場值得信賴的合作伙伴,致力于提供創新解決方案。


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

    關注

    146

    文章

    17970

    瀏覽量

    366557
  • usb
    usb
    +關注

    關注

    60

    文章

    8179

    瀏覽量

    272760
  • 恩智浦
    +關注

    關注

    14

    文章

    5980

    瀏覽量

    116493
  • i.mxrt1060
    +關注

    關注

    1

    文章

    3

    瀏覽量

    3097

原文標題:RT1060移植TinyUSB:快速擴展大量USB Class示例

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    米爾NXP i.MX 91核心板發布,助力新一代入門級Linux應用開發

    本帖最后由 blingbling111 于 2025-5-30 16:17 編輯 米爾電子基于與NXP長期合作的嵌入式處理器開發經驗,在i.MX 6和i.MX 8系列核心板領域已形成完整產品
    發表于 05-30 11:20

    NXP i.MX 91開發板#支持快速創建基于Linux?的邊緣器件

    NXP Semiconductors FRDM i.MX 91開發板設計用于評估i.MX 91應用處理器,支持快速創建基于Linux ^?^ 的邊緣器件。該開發板還設計用于入門級Lin
    的頭像 發表于 05-19 10:55 ?728次閱讀
    <b class='flag-5'>NXP</b> <b class='flag-5'>i.MX</b> 91開發板#支持<b class='flag-5'>快速</b>創建基于Linux?的邊緣器件

    《電子發燒友電子設計周報》聚焦硬科技領域核心價值 第11期:2025.05.12--2025.05.16

    2、RV1106平臺基于PaddleDetection的高效目標檢測全指南(FPS 25 幀) 3、NXP i.MX RT1060移植TinyUS
    發表于 05-16 19:47

    是否可以為RT1060添加HDMI輸出?

    是否可以為 RT1060 添加 HDMI 輸出?我想支持標準 720p 分辨率并使用圖形加速。
    發表于 04-10 08:04

    NXP i.MX 93 開發板#提供高效的機器學習 支持高能效的邊緣計算

    Wi-Fi ^?^ 和藍牙功能,非常適合工業和物聯網應用。其主要功能包括HDMI顯示接口、LPDDR4/LPDDR4X存儲器、用于快速啟動的eMMC存儲器、PMIC和擴展選項。該板支持面向i.MX處理器
    的頭像 發表于 03-10 15:30 ?1352次閱讀
    <b class='flag-5'>NXP</b> <b class='flag-5'>i.MX</b> 93 開發板#提供高效的機器學習 支持高能效的邊緣計算

    NXP首款搭載MPU的FRDM產品怎么樣?FRDM i.MX93開發板開箱速覽

    近期,NXPi.MX 93系列處理器引入了FRDM系列產品線,推出了FRDM i.MX 93開發板,作為首款配備i.MX MPU的FRDM板,它提供了模塊化硬件、全面的軟件和工具,以
    的頭像 發表于 02-26 14:56 ?1158次閱讀
    <b class='flag-5'>NXP</b>首款搭載MPU的FRDM產品怎么樣?FRDM <b class='flag-5'>i.MX</b>93開發板開箱速覽

    i.MX RT處理器上使用PXP實現縮放和旋轉組合操作

    本文主要探討如何使用PXP實現縮放和旋轉組合操作,PXP是NXP推出的一個2D圖形加速器,主要完成對圖像的數據格式轉換、固定角度旋轉(90°,180°,270°),任意比例縮放、混色,移位以及翻轉等功能。運行平臺為i.MX RT
    的頭像 發表于 02-20 10:53 ?1151次閱讀
    在<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>處理器上使用PXP實現縮放和旋轉組合操作

    NXP專為邊緣AI打造的i.MX RT700跨界MCU到底強在哪?

    i.MX RT700系列提供了高性能、高集成度、先進功能和高能效的優化組合,為支持智能AI的邊緣端設備賦能,例如可穿戴設備、消費電子醫療設備、智能家居設備和HMI設備。 在i.MX RT
    發表于 11-08 09:40 ?1738次閱讀
    <b class='flag-5'>NXP</b>專為邊緣AI打造的<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>700跨界MCU到底強在哪?

    i.MX Linux開發實戰指南—基于野火i.MX系列開發板

    電子發燒友網站提供《i.MX Linux開發實戰指南—基于野火i.MX系列開發板.pdf》資料免費下載
    發表于 10-10 17:23 ?12次下載

    使用TPS65023的NXP i.MX 7電源設計

    電子發燒友網站提供《使用TPS65023的NXP i.MX 7電源設計.pdf》資料免費下載
    發表于 09-30 10:38 ?1次下載
    使用TPS65023的<b class='flag-5'>NXP</b> <b class='flag-5'>i.MX</b> 7電源設計

    NXP Semiconductors i.MX 93處理器特性概述

    NXP Semiconductors i.MX 93節能應用處理器通過集成EdgeLock? 安全飛地提供高效的機器學習 (ML) 加速和高級安全性,支持節能邊緣計算。i.MX 93應用處理器集成
    發表于 09-25 14:42 ?1131次閱讀
    <b class='flag-5'>NXP</b> Semiconductors <b class='flag-5'>i.MX</b> 93處理器特性概述

    使用TPS6521815 PMIC為NXP i.MX 6ULL、6UltraLite供電

    電子發燒友網站提供《使用TPS6521815 PMIC為NXP i.MX 6ULL、6UltraLite供電.pdf》資料免費下載
    發表于 09-13 09:44 ?1次下載
    使用TPS6521815 PMIC為<b class='flag-5'>NXP</b> <b class='flag-5'>i.MX</b> 6ULL、6UltraLite供電

    使用TPS6521825和LP873347 PMIC為NXP i.MX 8M Mini和Nano供電

    電子發燒友網站提供《使用TPS6521825和LP873347 PMIC為NXP i.MX 8M Mini和Nano供電.pdf》資料免費下載
    發表于 09-13 09:42 ?0次下載
    使用TPS6521825和LP873347 PMIC為<b class='flag-5'>NXP</b> <b class='flag-5'>i.MX</b> 8M Mini和Nano供電

    使用TPS6521815 PMIC為NXP i.MX 7處理器供電

    電子發燒友網站提供《使用TPS6521815 PMIC為NXP i.MX 7處理器供電.pdf》資料免費下載
    發表于 09-13 09:40 ?0次下載
    使用TPS6521815 PMIC為<b class='flag-5'>NXP</b> <b class='flag-5'>i.MX</b> 7處理器供電

    使用TPS6521815 PMIC為NXP i.MX 6Solo、6DualLite供電

    電子發燒友網站提供《使用TPS6521815 PMIC為NXP i.MX 6Solo、6DualLite供電.pdf》資料免費下載
    發表于 09-13 09:39 ?0次下載
    使用TPS6521815 PMIC為<b class='flag-5'>NXP</b> <b class='flag-5'>i.MX</b> 6Solo、6DualLite供電
    主站蜘蛛池模板: 国产一级真人毛爱做毛片 | 色噜噜在线视频 | 天堂网视频 | 久久国产乱子伦精品免费一 | 久久精品伊人波多野结 | eee在线播放成人免费 | 蜜月mv国产精品 | 欧美一级视频在线 | 国产精品久久精品牛牛影视 | 亚洲第一成人影院 | 午夜日批 | 国产精品午夜久久久久久99热 | 婷婷丁香啪啪 | 色视频网站免费 | 147西西人体大胆免费网 | 欧美精品xxxⅹ欧美 欧美精品高清在线xxxx | 4388x17亚洲最大成人网 | 天堂网在线www| 五月天婷婷在线观看 | 射在老师的里面真爽 | 欧美一级欧美三级在线 | 国产一区二区三区在线影院 | 婷婷网五月天天综合天天爱 | 天天看天天爽天天摸天天添 | 亚洲怡红院在线观看 | 久久久久久久久久久9精品视频 | 国内精品一区二区在线观看 | 欧美高清性色生活 | 狠狠色综合网站久久久久久久 | 欧美熟夫| 欧美特级黄 | 丁香花免费观看视频 | 韩国最新三级网站在线播放 | 四虎色影院 | 亚洲男人的天堂久久香蕉 | 国产小视频免费 | 天天插日日射 | 国产看午夜精品理论片 | 四虎1515hh永久久免费 | 456影院第一 | 欧美一级片在线免费观看 |