在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

在ZLG打造的AWorks嵌入式實時操作系統中,如何創建一個自定義的USB設備

UtFs_Zlgmcu7890 ? 來源:lq ? 2019-05-09 09:27 ? 次閱讀

由于USB的靈活性,已被廣泛應用于PC機的人機接口、存儲及嵌入式系統中。本文為大家介紹在ZLG打造的AWorks嵌入式實時操作系統中,如何創建一個自定義的USB設備。

USB,是英文Universal Serial Bus(通用串行總線的縮寫),是一種快速、靈活的總線接口。USB對所有的USB外設提供了單一的易于使用的標準的連接類型,簡化了USB外設的設計。USB接口支持熱插拔,計算機系統可以動態地檢測外設的插拔,并且動態地加載驅動程序。另外,USB還具有很靈活的擴展性,一個USB端口接上一個USB HUB(集線器)就可以擴展多個USB端口。USB廣泛的應用于PC機中的人機接口、音頻、存儲等功能,隨著嵌入式系統在各個領域上廣泛應用,USB也在嵌入式系統中被廣泛的使用。

USB簡介

USB是在1994年底由英特爾、康柏、IBM、Microsoft等多家公司聯合提出。ISB1.1是較為普遍的USB規范,其高速方式的傳輸速率是12Mbps,低速模式的傳輸速率為1.5Mbps(b是bit的意思,12Mbps=1.5MB/s),USB2.0規范是由USB1.1規范演變而來,它的傳輸速率達到了480Mbps,足以滿足大多數外設的速率要求。USB2.0中的EHCI(增強主機控制器接口)定義了一個與USB1.1相兼容的結構。它可以用USB2.0的驅動程序驅動USB1.1的設備,也就是說所有支持USB1.1的設備都可以直接在USB2.0的接口上使用而不必擔心兼容性問題。

USB采用四線電纜,其中兩根是用來傳送數據的串行通道,另兩根為下游設備提供電源,對于任何已經成功連接且相互識別的外設,將以對方設備均能夠支持的最高速率傳輸數據。USB總線會根據外設情況在所兼容的傳輸模式中自動地由高速向低速動態轉換且匹配鎖定在合適的速率。USB系統采用級聯星型拓撲,該拓撲由三個基本部分組成:主機,集線器和功能設備。

主機包含有主控制器和根集線器,控制著USB總線上的數據和控制信息的流動,每個USB系統只能有一個根集線器,它連接在主控制器上。

集線器是USB結構中的特定成分,它可以對原有的USB端口在數量上進行擴展以獲得更多的USB端口(集線器只能擴展出更多的USB端口,而不能擴展出更多的帶寬),設備通過端口連接到USB總線上,同時檢測連接在總線上的設備,并為這些設備提供電源管理,負責總線的故障檢測和恢復。集線可為總線提供能源,亦可為自身提供能源。

功能設備通過端口與總線連接。

本文章以M1052平臺為例,主要講解在AWorks平臺中如何創建一個自定義的USB設備。

1AWorks工程配置

在AWorks工程中,用戶可以通過aw_prj_params.h配置文件進行設備添加與刪除,aw_prj_params.h在工程目錄user_config中。

在aw_prj_params.h文件中,有效定義設備的使能宏,才表示一個有效的硬件設備,在本文章中我們需要使能USB Device,所以在aw_prj_params.h中添加AW_DEV_IMX1050_USBD設備宏。

在aw_prj_params.h中添加AW_DEV_IMX1050_USBD設備宏之后,在aw_prj_param_auto_cfg.h文件中會自動添加AW_COM_USBD的定義,AW_COM_USBD代表的是USB Device協議棧組件。此處要注意AW_DEV_IMX1050_USBD與AW_DEV_IMX1050_USBH1有沖突(一個USB控制器不能同時出現主機設備模式),兩個只能使能一個。AW_DRV_IMX1050_USBD表示加載USB Device的驅動:

2AWorks中USB Device的硬件配置

在AWorks中所有設備集中由AWbus_lite進行管理,在使用一個硬件設備前,必須將其添加到系統硬件設備列表(在awbus_lite_hwconf_usrcfg.c中定義),各個硬件設備的類型為struct awbl_devhcf。USB設備相關硬件配置可以查閱工程目錄下的:

\user_config\awbl_hwconf_usrcfg\awbl_hwconf_imx1050_usbd.h文件,USB設備模式的設備信息詳見程序清單2.1。

程序清單2.1 USB設備模式的設備信息類型定義

其中"/dev/usbd" 是USB Device外設的設備名字,在實際的應用中需要通過該名字來使用USB Device

AWBL_USBD_CFG_SELF_POWERED 表示本設備為自行供電設備。__imx1050_usbd_plfm_init函數是用來初始化與USB Device平臺相關的信息,在這里是初始化USB Device時鐘,詳見程序清單2.2。

程序清單2.2 USB設備模式的平臺初始化函數

3與USB Device操作函數相關重要結構體介紹

USB設備類回調函數列表,這個結構體用于提供USB枚舉以及USB通信過程中的事件回調接口,方便用戶接入應用代碼:

USB設備信息結構體,此結構體用于配置USB設備的基礎信息(具體信息詳見結構體定義),當設備連接到PC端后,可以在PC端查看到這些信息:

USB設備接口信息結構體,這個結構體是用來描述當前USB設備接口的信息:

4USB Device操作接口

AWorks提供了一系列的USB Device操作相關的標準接口,包括初始化一個USB設備、USB功能初始化、啟動USB設備和USB數據傳輸等,用戶在使用AWorks開發USB Device的應用程序時,使用上述標準接口就能方便快捷的開發出源代碼。詳見表4.1

表4.1 USB設備模式操作接口函數

struct aw_usbd 為USB Device對象

struct aw_usbd_fun 為功能接口對象

struct aw_usbd_pipe 為端點管道對象

5應用案例代碼詳解

這里基于M1052平臺,展示如何創建一個自定義的USB設備。本例子會初始化一個USB設備,為USB設備創建一個OUT管道和一個IN管道用于接收和發送數據(IN和OUT的概念是相對于USB主機而言),并在這個USB設備添加接口功能。通過USB設備與PC機的連接,實現與PC的通訊,當PC機上位機軟件發送數據時,USB設備通過OUT管道接收數據,并通過IN管道把收到的數據發送回PC端上位機。這里只對部分關鍵的代碼進行講解,完整的代碼請自行下載查看,本例程所在目錄位于:

\examples\peripheral\common\usb\ demo_usbd_vendor.c

定義數據接收緩沖區的大小和等待超時時間:

定義USB Device的信息,當USB Device與PC端連接時,PC端會對其進行枚舉從而獲取USB Device的設備信息,這些信息都可以在PC端進行查看:

USB Device接口信息結構體:

USB Device例程入口函數,這里主要是初始化USB Device對象,并為這個USB Device對象添加自定義功能,最后通過調用aw_usbd_start函數啟動配置好的USB Device。

創建USB Device自定義功能,在本例程中,調用aw_usbd_pipe_create函數為USB Devie的自定義功能創建兩個管道,一個OUT管道和一個IN管道用于接收和發送數據,然后把這個功能添加進上文中初始化好的USB Device對象,最后創建一個任務用于接收數據并把數據發送回去。

USB Device接收發送任務,當USB Device連接到PC端后,PC端檢測到USB Device的設備信息和設置功能接口后,就會調用USB Device接口信息的回調函數__custom_alt_set,__custom_alt_set會發送信號量,通知USB Device接收發送任務USB Device已連接到PC端,然后進入等待數據接收狀態,當收到數據后會取消阻塞狀態,然后把收到的數據通過IN管道再發送出去:

6應用案例演示

把完整的例程拷貝到工程的user_code目錄,并把USB Device入口函數demo_usbd_vendor_entry添加到main.c文件中:

編譯程序并把程序燒寫進M1052開發板后,通過USB線連接開發板上的USB HOST1 和PC機,這時PC即會檢測到有USB設備插入,在PC機上安裝對應的驅動后,PC機識別到我們的自定義USB設備。

打開PC端串口打印:

PC端上檢測到USB Device的插入,此時因為PC端沒有相應的驅動,所以檢測到是未知設備:

在PC機上安裝相應的驅動后,PC機識別到我們的自定義USB設備:

打開專用的USB通訊軟件,選擇要操作的端點,因為在本例程中創建了兩個管道,一個IN管道一個OUT管道,所以在軟件中會看到本USB設備有兩個端點,選擇后會出現兩個窗口,一個是接收一個是發送。

在發送窗口輸入想要發送的數據,點擊發送,接收窗口就會收到響應的數據。

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

    關注

    5092

    文章

    19178

    瀏覽量

    307691
  • 集線器
    +關注

    關注

    0

    文章

    389

    瀏覽量

    39603
  • USB設備
    +關注

    關注

    0

    文章

    57

    瀏覽量

    16382
  • 嵌入式實時操作系統

    關注

    1

    文章

    127

    瀏覽量

    7873

原文標題:AWorks?編程——USB設備模式的使用

文章出處:【微信號:Zlgmcu7890,微信公眾號:周立功單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【安富萊】【RTX操作系統教程】第2章 嵌入式實時操作系統介紹

    操作系統。注:工業控制、 軍事設備、 航空航天等領域對系統的響應時間有苛刻的要求,這就需要使用實時系統
    發表于 01-15 15:35

    轉:第2章嵌入式實時操作系統介紹

    系統定義 當外界事件或數據產生時,能夠接受并以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統作出快速響應,并控制所有實時任務協調
    發表于 08-19 09:47

    【案例分享】FreeRTOS的嵌入式實時操作系統的實現

    FreeRTOS是源碼公開的免費的嵌入式實時操作系統,通過研究其內核可以更好地理解嵌入式
    發表于 07-23 04:30

    嵌入式操作系統USB雙向通信怎么實現?

    。本文介紹種基于S1C33L11芯片利用嵌入式操作系統的同步機制通過對循環隊列及自定義控制包的操作來實現雙向通信的方法。
    發表于 03-19 07:35

    如何在嵌入式操作系統ARM Linux實現ZLG7290的驅動?

    I2C總線接口的工作模式和特點如何在嵌入式操作系統ARM Linux實現ZLG7290的驅動?I2C總線傳送數據過程中有哪幾種信號?
    發表于 04-23 06:00

    嵌入式實時操作系統教程

    嵌入式實時操作系統教程:以VRTX為對象詳細介紹了嵌入式實時操作系統的原理和應用,特別是第
    發表于 04-19 21:55 ?44次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>教程

    嵌入式操作系統USB雙向通信的設計與實現

    本文介紹種基于S1C33L11芯片利用嵌入式操作系統的同步機制通過對循環隊列及自定義控制包的操作來實現雙向通信的方法。
    發表于 08-16 12:09 ?1309次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統</b><b class='flag-5'>中</b><b class='flag-5'>USB</b>雙向通信的設計與實現

    實時操作系統用于嵌入式應用系統的設計

    概述了嵌入式系統的開發工具實時操作系統的特點和核心內容;分析了利用實時
    發表于 10-10 15:23 ?42次下載
    <b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>用于<b class='flag-5'>嵌入式</b>應用<b class='flag-5'>系統</b>的設計

    基于FreeRTOS的嵌入式實時操作系統的原理和實現

    FreeRTOS是源碼公開的免費的嵌入式實時操作系統,通過研究其內核可以更好地理解嵌入式
    發表于 11-18 03:34 ?6725次閱讀

    不同的實時嵌入式Linux操作系統有什么差異

    嵌入式實時操作系統(Embedded Real-time Operation System,RTOS)。嵌入式系統是“用于控制、監視或者輔助
    發表于 11-06 11:36 ?1329次閱讀

    嵌入式實時操作系統的應用詳細教程說明

    本文檔的主要內容詳細介紹的是嵌入式實時操作系統的應用詳細教程說明包括了:1 嵌入式系統嵌入式
    發表于 12-05 08:00 ?2次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>的應用詳細教程說明

    嵌入式實時操作系統

    14 種主流的嵌入式實時操作系統 RTOS,分別為μClinux、μC/OS-II、eCos、FreeRTOS、mbed OS、RTX、Vxworks、QNX、NuttX,而國產的嵌入式
    發表于 10-20 14:05 ?17次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>

    嵌入式操作系統

    嵌入式操作系統一嵌入式操作系統概述1.1 嵌入式操作系統的特點1.2
    發表于 11-03 18:36 ?46次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統</b>

    基于HAL庫的USB自定義HID設備實現

    設備,實現USB人機接口通訊。參考博文https://blog.csdn.net/zhanglifu3601881/article/details/89675307準備工作1.CubeMX
    發表于 12-28 20:04 ?13次下載
    基于HAL庫的<b class='flag-5'>USB</b><b class='flag-5'>自定義</b>HID<b class='flag-5'>設備</b>實現

    嵌入式開發自定義協議的解析與組包

    嵌入式產品開發,經常會遇到兩設備之間的通信、設備與服務器的通信、
    發表于 01-25 11:14 ?5次下載
    <b class='flag-5'>嵌入式</b>開發<b class='flag-5'>中</b><b class='flag-5'>自定義</b>協議的解析與組包
    主站蜘蛛池模板: 大色综合色综合网站 | 又粗又长又色又爽视频 | 国产大片黄在线观看 | 国产三级日本三级韩国三级在线观看 | 可以直接看的黄址 | 免费亚洲一区 | 欧美日韩啪啪 | 欧美aaaaaaaaa| 久久电影www成人网 久久电影福利 | 五月婷亚洲 | 丁香四月婷婷 | 黄视频福利| 在线欧美激情 | 天天夜约 | 国产精品日韩欧美亚洲另类 | 色综合一区二区三区 | 午夜久久久久久久 | 夜夜综合网 | 亚洲偷偷| 久久精品韩国三级 | 国产精品区在线12p 国产精品任我爽爆在线播放6080 | 又潮又黄的叫床视频 | 东京加勒比| 国产高清成人mv在线观看 | 三级在线网站 | 久久久久久久久综合影视网 | 性色免费视频 | 免费播放视频 | 色聚网久久综合 | 清纯唯美亚洲综合欧美色 | 天天做夜夜做久久做狠狠 | 亚洲日本一区二区三区在线不卡 | yyy6080韩国三级理论 | 国产精品三级在线 | 日韩欧美卡通动漫在线观看 | 男女视频在线播放 | 波多野结衣福利 | 一区在线观看 | 日本不卡视频一区二区 | 久久亚洲国产精品五月天 | 成人剧场 |