女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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基礎(chǔ)類,對于諸如ECM、NCM等特定類的開發(fā)而言,若要從頭開始構(gòu)建,有可能會拖延客戶項目的推進。

這時候,TinyUSB閃亮登場!

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

選擇TinyUSB的幾大優(yōu)勢:

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

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

  • 易于移植:清晰的架構(gòu)設(shè)計和OSAL,無論是裸機還是RTOS環(huán)境,移植起來都相對順暢

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

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

一、準備事項:裝備檢查

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

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

  • 軟件工具

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

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

  • Make: 構(gòu)建工具,跑 TinyUSB 自帶腳本會用到

  • Python: 同樣是跑腳本用

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

mkdir //TinyUSB_Porting
cd /c/TinyUSB_Porting
git init

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

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

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

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

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

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

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

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

cd tinyusb/examples/device/cdc_msc

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

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

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

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

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

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

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

# 參數(shù)解釋:
# BOARD=mimxrt1060_evk - 目標板
# DEBUG=1 - 打開調(diào)試信息,方便看日志
# 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盤,那就穩(wěn)了!這證明TinyUSB和NXP底層驅(qū)動這對“CP”在你這塊板子上是能正常工作的。

三、主戰(zhàn)場:MCUXpresso IDE集成

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

步驟1: 建立“根據(jù)地” (創(chuàng)建基礎(chǔ)工程)

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

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

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

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

2.取個名字,比如tinyusb。

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

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

  • src/common: 通用工具函數(shù)

  • src/device: USB 設(shè)備協(xié)議棧核心代碼

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

  • src/osal: 操作系統(tǒng)抽象層

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

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

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

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

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

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

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

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

  • tusb_config.h: TinyUSB的配置文件。所有功能的開關(guān)、參數(shù)都在這里調(diào)

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

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

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

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

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

  • 點擊"Add...",把下面這些路徑加進去(根據(jù)實際項目結(jié)構(gòu)可能需要微調(diào))

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

步驟7: 配置 PreprocessorDefines

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

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

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

  • CFG_TUSB_MCU=OPT_MCU_MIMXRT1XXX: 關(guān)鍵!這就是告訴 TinyUSB:“現(xiàn)在需要跑在 NXP RT 芯片上!”

  • 按需添加其他調(diào)試宏,比如 CFG_TUSB_DEBUG=2

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

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

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

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

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

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

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

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

4. TinyUSB配置文件和Class文件

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

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

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

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

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

五、勝利收官:總結(jié)展望

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

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

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

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

[參考鏈接]:

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

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

作者:Gavin Jia

恩智浦MCU加油站

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


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

    關(guān)注

    146

    文章

    17847

    瀏覽量

    360625
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8146

    瀏覽量

    270939
  • 恩智浦
    +關(guān)注

    關(guān)注

    14

    文章

    5948

    瀏覽量

    113262
  • i.mxrt1060
    +關(guān)注

    關(guān)注

    1

    文章

    3

    瀏覽量

    3074

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

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

收藏 人收藏

    評論

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

    米爾NXP i.MX 91核心板發(fā)布,助力新一代入門級Linux應(yīng)用開發(fā)

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

    NXP i.MX 91開發(fā)板#支持快速創(chuàng)建基于Linux?的邊緣器件

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

    《電子發(fā)燒友電子設(shè)計周報》聚焦硬科技領(lǐng)域核心價值 第11期:2025.05.12--2025.05.16

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

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

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

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

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

    NXP首款搭載MPU的FRDM產(chǎn)品怎么樣?FRDM i.MX93開發(fā)板開箱速覽

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

    i.MX RT處理器上使用PXP實現(xiàn)縮放和旋轉(zhuǎn)組合操作

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

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

    i.MX RT700系列提供了高性能、高集成度、先進功能和高能效的優(yōu)化組合,為支持智能AI的邊緣端設(shè)備賦能,例如可穿戴設(shè)備、消費電子醫(yī)療設(shè)備、智能家居設(shè)備和HMI設(shè)備。 在i.MX RT
    發(fā)表于 11-08 09:40 ?1629次閱讀
    <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開發(fā)實戰(zhàn)指南—基于野火i.MX系列開發(fā)板

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

    使用TPS65023的NXP i.MX 7電源設(shè)計

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

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

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

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

    電子發(fā)燒友網(wǎng)站提供《使用TPS6521815 PMIC為NXP i.MX 6ULL、6UltraLite供電.pdf》資料免費下載
    發(fā)表于 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供電

    電子發(fā)燒友網(wǎng)站提供《使用TPS6521825和LP873347 PMIC為NXP i.MX 8M Mini和Nano供電.pdf》資料免費下載
    發(fā)表于 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處理器供電

    電子發(fā)燒友網(wǎng)站提供《使用TPS6521815 PMIC為NXP i.MX 7處理器供電.pdf》資料免費下載
    發(fā)表于 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供電

    電子發(fā)燒友網(wǎng)站提供《使用TPS6521815 PMIC為NXP i.MX 6Solo、6DualLite供電.pdf》資料免費下載
    發(fā)表于 09-13 09:39 ?0次下載
    使用TPS6521815 PMIC為<b class='flag-5'>NXP</b> <b class='flag-5'>i.MX</b> 6Solo、6DualLite供電