哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

如何通過(guò)MM32 USB實(shí)現(xiàn)shell輔助調(diào)試方案

454398 ? 來(lái)源:靈動(dòng)MM32MCU ? 作者:靈動(dòng)MM32MCU ? 2021-02-15 06:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在前面的章節(jié)中我們介紹了MM32 USB各種功能類型,也介紹了如何通過(guò)串口或者J-Link RTT方式實(shí)現(xiàn)shell輔助調(diào)試方式,但是其都需要依賴額外的工具,比如串口方式就需要USB轉(zhuǎn)TTL,J-Link RTT需要使用J-Link下載器,所以希望有新的方法實(shí)現(xiàn)shell,本次我們介紹USB CDC的方式來(lái)實(shí)現(xiàn)shell功能。

本次我們采用MM32L373 MiniBoard作為測(cè)試開發(fā)板,驗(yàn)證USB CDC的方式來(lái)實(shí)現(xiàn)shell功能。

前面已經(jīng)為大家講解了shell的串口方法,其實(shí)原理一樣,只是用MM32 USB枚舉成串口設(shè)備替代USB轉(zhuǎn)TTL,直接從USB獲取數(shù)據(jù)到MCU,也不需要額外占用MCU的串口,節(jié)省資源和硬件,相關(guān)的代碼都可以從之前的文章獲取,本次只是融合兩者,改變實(shí)現(xiàn)接口,具體代碼參考如下:

對(duì)于CDC部分,其函數(shù)初始化配置及相關(guān)全局變量定義內(nèi)容,代碼如下:

#define USBD_POWER 0

#define USBD_MAX_PACKET0 64

#define USBD_DEVDESC_IDVENDOR 0x2F81 //0x0D28

#define USBD_DEVDESC_IDPRODUCT 0x0001 //0x0204

以上是定義的MM32 MCU CDC設(shè)備VID和PID,靈動(dòng)微電子已經(jīng)獲得USB組織授權(quán)的VID和PID。當(dāng)設(shè)備插入電腦上,可以查看到如上標(biāo)識(shí)的CDC設(shè)備,如圖1所示:

pIYBAF_8DO6AFL3iAAMqMeIJuO8301.png

圖1 PC設(shè)備管理器列表

對(duì)于MM32 MCU的CDC功能來(lái)說(shuō),

在使用CDC功能之前先調(diào)用USB初始化函數(shù)來(lái)初始化USB協(xié)議棧。

int main(void)

{

// USB Device Initialization and connect

usbd_init();

usbd_connect(__TRUE);

while (!usbd_configured()) // Wait for USB Device to configure
{
}
while (1)
{
}
}

對(duì)于shell部分其函數(shù)初始化配置及相關(guān)全局變量定義內(nèi)容,代碼如下:

typedef struct

{

char *command; // shell命令提示符

char buffer[SHELL_COMMAND_MAX_LENGTH]; // shell命令緩沖buffer

unsigned short length; // shell命令長(zhǎng)度大小

unsigned short cursor; // shell光標(biāo)位置偏移

char *param[SHELL_PARAMETER_MAX_NUMBER]; // shell參數(shù)變量

char history[SHELL_HISTORY_MAX_NUMBER][SHELL_COMMAND_MAX_LENGTH]; // 歷史記錄區(qū)域

unsigned short historyCount; // 歷史記錄數(shù)量

short historyFlag; // 當(dāng)前記錄偏移位置

short historyOffset; // 歷史記錄偏移大小

SHELL_CommandTypeDef *commandBase; // 命令表基地址

unsigned short commandNumber; // 命令數(shù)量

int keyFuncBase; // 按鍵響應(yīng)表基地址

unsigned short keyFuncNumber; // 按鍵響應(yīng)數(shù)量

SHELL_InputMode status; // shell輸入狀態(tài)

unsigned char isActive; //是不是當(dāng)前激活的shell

shellRead read; // shell讀函數(shù)接口

shellWrite write; // shell寫函數(shù)接口

}SHELL_TypeDef;

如上所示,為對(duì)象的定義接口,移植的步驟先定義一個(gè)shell對(duì)象,即:SHELL_TypeDef cdc_shell,然后實(shí)例化對(duì)象的操作接口,具體說(shuō)明看注釋,對(duì)于其中我們需要關(guān)注的是shell的讀寫接口。由于本次我們使用USB CDC接收和發(fā)送數(shù)據(jù),所以我們只需要在USB CDC的函數(shù)中處理接收到的數(shù)據(jù)即可,我們使用shellHandler(&cdc_shell, EP2RXBuff[i]);來(lái)處理數(shù)據(jù)的交互,具體函數(shù)代碼參考串口shell代碼。

shell的發(fā)送接口,只需要把數(shù)據(jù)拷貝到buffer即可。

shell的讀寫接口移植到CDC上,代碼如下:

void USBD_CDC_TASK(void)

{

uint8_t i, count;

NotifyOnStatusChange();

if (CDC_UART ->ISR & 0x08)

{

CDC_UART ->GCR &= ~(3 << 3);

CDC_UART ->GCR = 3 << 3;

UART_ClearITPendingBit(CDC_UART, UART_OVER_ERR);

}

// USB -> UART

if (EP2ReceiveFlag == 1)

{

EP2ReceiveFlag = 0;

for (i = 0; i < RxBufLen; i++)

shellHandler(&cdc_shell, EP2RXBuff[i]);

}

// UART -> USB

if (EP2TransferFlag == 1)

{

if (TxBufLen > 0)

{

while (USB->rEP2_CTRL & 0x80);

if (TxBufLen > 64)

{

UART_ReadData(EP2TXBuff, 64);

count = 64;

TxBufLen -= 64;

}

else

{

UART_ReadData(EP2TXBuff, TxBufLen);

count = TxBufLen;

TxBufLen = 0;

}

usb_buf_busy_flag = 1;

for (i = 0; i < count; i++)

{

USB->rEP2_FIFO = *(EP2TXBuff + i);

}

if ((USB ->rEP2_AVIL & 0x3f) == count)

{

USB->rEP2_CTRL = 0x80 | count;

}

else

{

USB->rTOP |= 1 << 3;

USB->rTOP &= ~(1 << 3);

}

USB->rEP2_CTRL = 0x80 | count;

if (0 == TxBufLen)

EP2TransferFlag = 0;

}

}

}

如上,我們就完成通過(guò)MM32 MCU的CDC實(shí)現(xiàn)shell調(diào)試功能,用串口助手打開虛擬串口,用CDC shell測(cè)試發(fā)送數(shù)據(jù),結(jié)果如下:

pIYBAF_8DP-AHq7DAAXuE60Q2B0041.png

圖2 功能演示

以上就是MM32 MCU USB的CDC shell功能。
編輯:hfy

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

    關(guān)注

    147

    文章

    19128

    瀏覽量

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

    關(guān)注

    60

    文章

    8476

    瀏覽量

    285863
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    375

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    自制USB隔離模塊:為開發(fā)調(diào)試筑起安全防線

    針對(duì)高壓調(diào)試易燒電腦、市售隔離模塊使用不便的痛點(diǎn),本文分享一款自制的USB隔離模塊。該模塊采用ADuM3160磁隔離芯片、雙路隔離電源與繼電器自動(dòng)切換,并擴(kuò)展出四個(gè)USB口,配合穩(wěn)固的外殼設(shè)計(jì),為
    的頭像 發(fā)表于 03-16 16:56 ?563次閱讀
    自制<b class='flag-5'>USB</b>隔離模塊:為開發(fā)<b class='flag-5'>調(diào)試</b>筑起安全防線

    RK3588平臺(tái)USB攝像頭調(diào)試實(shí)戰(zhàn):從報(bào)錯(cuò)到穩(wěn)定運(yùn)行

    在嵌入式開發(fā)中,RK3588 憑借強(qiáng)勁的算力常被用于邊緣計(jì)算、工業(yè)視覺(jué)等場(chǎng)景,而 USB 攝像頭作為常見外設(shè),調(diào)試過(guò)程中難免遇到各類 “卡殼” 問(wèn)題。最近我們?cè)?RK3588 上調(diào)試 USB
    的頭像 發(fā)表于 02-04 16:13 ?696次閱讀

    如何為IoT設(shè)備添加USB功能?樂(lè)鑫ESP-USB單芯片方案詳解

    降低物料成本與設(shè)計(jì)復(fù)雜度。設(shè)備可作為USB主機(jī)連接攝像頭、4G模組等外設(shè),亦可作為USB設(shè)備實(shí)現(xiàn)無(wú)線存儲(chǔ)、HID交互等功能,同時(shí)支持便捷的固件升級(jí)與調(diào)試。
    的頭像 發(fā)表于 02-04 09:31 ?1094次閱讀
    如何為IoT設(shè)備添加<b class='flag-5'>USB</b>功能?樂(lè)鑫ESP-<b class='flag-5'>USB</b>單芯片<b class='flag-5'>方案</b>詳解

    告別USB線!無(wú)線ADB調(diào)試,附全志/瑞芯微實(shí)戰(zhàn)教程

    前言:作為嵌入式開發(fā)者,很多人習(xí)慣性使用ADB而不是調(diào)試的debug串口。尤其是在使用buildroot或ubuntu這類非Android系統(tǒng)的嵌入式設(shè)備時(shí),傳統(tǒng)的ADB調(diào)試依賴于通過(guò)USB
    的頭像 發(fā)表于 01-23 08:32 ?5728次閱讀
    告別<b class='flag-5'>USB</b>線!無(wú)線ADB<b class='flag-5'>調(diào)試</b>,附全志/瑞芯微實(shí)戰(zhàn)教程

    簡(jiǎn)單高效的一體化USB電源管理IC解決方案

    ADI提供了多款簡(jiǎn)化USB線纜電源轉(zhuǎn)換的器件,其中LTC3455實(shí)現(xiàn)了超高水平的功能集成度。LTC3455 采用4mm × 4mm QFN封裝,能夠無(wú)縫管理交流適配器、
    的頭像 發(fā)表于 01-13 13:59 ?5137次閱讀
    簡(jiǎn)單高效的一體化<b class='flag-5'>USB</b>電源管理IC解決<b class='flag-5'>方案</b>

    靈動(dòng)微32位單片機(jī)MM32充電系統(tǒng)監(jiān)控解決方案

    MM32F0040系列32位單片機(jī)提出的電流監(jiān)控方案,憑借其高性能、高集成度與高可靠性,正成為越來(lái)越多充電設(shè)備廠商的理想選擇。
    的頭像 發(fā)表于 11-26 16:33 ?671次閱讀

    基于MM32 MCU系列微控制器的空調(diào)外機(jī)智能控制方案

    MCU微控制器為核心的智能方案逐漸成為主流。英尚微電子推出以靈動(dòng)微MM32 MCU系列為主控的空調(diào)外機(jī)參考方案,旨在為空調(diào)系統(tǒng)提供更加智能化的控制方案。
    的頭像 發(fā)表于 11-25 17:10 ?647次閱讀

    Auracast廣播音頻解決方案通過(guò)Nordic Semiconductor無(wú)線連接技術(shù) 在公共場(chǎng)所提供輔助聽力支持

    Semiconductor雙核nRF5340多協(xié)議SoC驅(qū)動(dòng)的完整解決方案,讓場(chǎng)館和終端用戶通過(guò) Auracast 廣播音頻技術(shù)在公共場(chǎng)所實(shí)現(xiàn)輔助聽力支持。 ? AuriTM解決
    的頭像 發(fā)表于 11-05 17:59 ?4035次閱讀

    博世中階智能輔助駕駛方案實(shí)現(xiàn)規(guī)?;桓?/a>

    10月17日,博世中階智能輔助駕駛迎來(lái)批量交付的關(guān)鍵節(jié)點(diǎn)。今年上半年,該方案已獲得捷途、東風(fēng)、北汽等五家車企的十余款車型定點(diǎn)。歷經(jīng)數(shù)月的開發(fā)調(diào)試與嚴(yán)苛測(cè)試,如今順利實(shí)現(xiàn)規(guī)模化交付,充分
    的頭像 發(fā)表于 10-23 09:07 ?918次閱讀

    【RA-Eco-RA6M4開發(fā)板評(píng)測(cè)】移植shell實(shí)現(xiàn)命令交互

    代碼見 一. 前言前面我們實(shí)現(xiàn)了標(biāo)準(zhǔn)輸入輸出,為了進(jìn)一步方便交互調(diào)試,我們繼續(xù)來(lái)實(shí)現(xiàn)一個(gè)精簡(jiǎn)的shell。Shell
    發(fā)表于 07-19 22:47

    黑芝麻智能攜手Nullmax打造輔助駕駛主流量產(chǎn)方案

    ? 黑芝麻智能與Nullmax聯(lián)合打造的輔助駕駛主流量產(chǎn)方案,基于單顆武當(dāng)C1236芯片,集成Nullmax自研軟件架構(gòu)與視覺(jué)感知算法,實(shí)現(xiàn)城區(qū)記憶領(lǐng)航、高速領(lǐng)航輔助及記憶泊車等功能。
    的頭像 發(fā)表于 06-26 18:36 ?1761次閱讀
    黑芝麻智能攜手Nullmax打造<b class='flag-5'>輔助</b>駕駛主流量產(chǎn)<b class='flag-5'>方案</b>

    如何通過(guò)串口調(diào)試助手通過(guò)USB口讀取電子標(biāo)簽信息和狀態(tài)?

    因?yàn)閯偤庙?xiàng)目上需要用到NFC標(biāo)簽所以想能夠通過(guò)USB口或者串口,用串口調(diào)試助手通過(guò)發(fā)命令的方式 讀取電子標(biāo)簽信息和狀態(tài)而不是用ST25R200_Eval_GUI軟件讀取
    發(fā)表于 06-17 07:51

    通過(guò)御控APP實(shí)現(xiàn)PLC遠(yuǎn)程調(diào)試與遠(yuǎn)程監(jiān)控

    御控APP,通過(guò)移動(dòng)化、智能化的手段,實(shí)現(xiàn)了PLC遠(yuǎn)程調(diào)試與監(jiān)控,為工業(yè)生產(chǎn)帶來(lái)了便捷與高效。
    的頭像 發(fā)表于 06-04 09:49 ?788次閱讀

    靈動(dòng)微電子MM32MCU的主流型芯片選型

    靈動(dòng)微電子MM32系列32位MCU已經(jīng)在江湖上久負(fù)盛名,以產(chǎn)品平臺(tái)化、系列化、兼容性好、性價(jià)比高、易于開發(fā)著稱。MM32MCU分為超值型、主流型、性能型、低功耗、汽車控制、電機(jī)與電源等六大系列。今天給大家綜合介紹MM32MCU的
    的頭像 發(fā)表于 05-06 13:32 ?3321次閱讀
    靈動(dòng)微電子<b class='flag-5'>MM</b>32MCU的主流型芯片選型

    USB 3.0CX3中的輔助引導(dǎo)加載程序后無(wú)法識(shí)別怎么解決?

    的引導(dǎo)加載程序實(shí)現(xiàn)基于來(lái)自boot_fw/src/spi_test.c的參考代碼。 觀察到的行為 1當(dāng)直接加載應(yīng)用程序(不使用 SBL)時(shí) →USB 3.0 工作正常。 2. 通過(guò)輔助
    發(fā)表于 05-06 08:39
    婺源县| 蒙自县| 南漳县| 平邑县| 东乌| 池州市| 岗巴县| 泰来县| 连州市| 巴青县| 阿克陶县| 孝义市| 政和县| 临洮县| 昌江| 顺义区| 怀安县| 平遥县| 巴林左旗| 永吉县| 洞口县| 南阳市| 义马市| 永和县| 本溪| 永仁县| 龙里县| 惠水县| 云梦县| 南涧| 恩施市| 修水县| 永吉县| 忻城县| 菏泽市| 萍乡市| 辽宁省| 凉城县| 成都市| 平湖市| 盐池县|