女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當前位置:首頁 > 智能硬件 > 智能硬件
[導讀]摘 要:USB(Universal Serial Bus)是目前應用非常廣泛的一種總線形式。其即插即用、熱插拔、接口體積小巧等優(yōu)點給計算機外設連接技術(shù)帶來重大變革。μCOS-II 是一個源碼公開、完整的、可移植、可固化、可裁剪的嵌

摘 要:USB(Universal Serial Bus)是目前應用非常廣泛的一種總線形式。其即插即用、熱插拔、接口體積小巧等優(yōu)點給計算機外設連接技術(shù)帶來重大變革。μCOS-II 是一個源碼公開、完整的、可移植、可固化、可裁剪的嵌入式實時操作系統(tǒng),可以方便地移植到多種微處理器上。以在新太科技實際工作中的LPC2378 讀卡器為例,詳細介紹μCOS-II 中USB 主機系統(tǒng)的設計。

  μC/OS-II 是美國學者Lacrosse 設計的一個優(yōu)秀的嵌入式實時操作系統(tǒng),其代碼絕大部分用ANSIC 語言編寫,可用于8 位、16 位、32 位、甚至64 位微處理器、微控制器、數(shù)字信號處理器等,具有操作系統(tǒng)最基本最核心的功能,非常適于在小型系統(tǒng)和片上系統(tǒng)(SOC)中使用。USB 為個人電腦與嵌入式設備之間的連接提供了一種標準化、單一化的接口,其高效性和可靠性使得它已經(jīng)成為嵌入式系統(tǒng)的首選接口。此LPC2378 讀卡器具有卡票檢測、消費扣錢、系統(tǒng)升級、下發(fā)黑名單、在線充值、余額查詢等功能,但這些功能的實現(xiàn)都依賴于上位機的請求,業(yè)務應用模塊只有在獲得相應的請求后才能進行相應的處理并將處理結(jié)果返回給上位機。而USB 主機系統(tǒng)就是起銜接上位機和業(yè)務應用模塊的功能,接收上位機請求以及將業(yè)務應用模塊的結(jié)果返回給上位機。

  1 構(gòu)建μC/OS-II系統(tǒng)環(huán)境

  1.1 移植μC/OS-II 到LPC2378 開發(fā)板

  嵌入式操作系統(tǒng)作為大多數(shù)嵌入式應用系統(tǒng)的軟件平臺,它管理著系統(tǒng)的資源,為應用軟件提供各種必要的服務。在嵌入式應用系統(tǒng)中使用嵌入式系統(tǒng),可以提升嵌入式應用系統(tǒng)的開發(fā)效率,但是在得到嵌入式操作系統(tǒng)提供服務之前,關鍵是要將嵌入式操作系統(tǒng)移植到目標板上。

  移植條件:

  移植μC/OS-II 之前需要注意,目標處理器必須滿足以下五點要求:

  1. 處理器的C 編譯器能產(chǎn)生可重入型代碼;2. 處理器支持中斷,并且能產(chǎn)生定時中斷(通常為10-100Hz);3. 用C 語言可以開/關中斷;4. 處理器能支持一定數(shù)量的數(shù)據(jù)存儲硬件堆棧(可能是幾KB);5. 處理器有將堆棧指針以及其他CPU 寄存器的內(nèi)容讀出并保存到堆?;騼?nèi)存中去的指令。

  LPC2378 系列ARM7 微控制器可以滿第2、4 和5 點要求,使用ADS 的C 編譯器可以滿足1 和3 點要求。

  移植步驟:

  OS_CPU.H 的移植:

  在OS_CPU.H 文件中定義與處理器相關的數(shù)據(jù)類型,例如BOOLEAN,INT8U 和INT8S 等。根據(jù)ADS1.2編譯器的特性定義。在OS_CPU.H 文件中定義與處理器相關的宏, 主要是進出臨界區(qū)代碼OS_ENTRER_CRITICAL()、OS_EXIT_CRITICAL()。

  將OS_ENTRER_CRITICAL()和OS_EXIT_CRITICAL()定義為軟件中斷函數(shù),所以還要編寫相應的軟件中斷處理代碼(可以在OS_CPU_C.C 文件中編寫)實現(xiàn)開/關中斷。同樣定義OS_TASK_SW()為軟件中斷函數(shù),并編寫相應的軟件中斷處理代碼(調(diào)用OS_IntCtxSw 函數(shù))實現(xiàn)任務切換。

  OS_CPU_C.C 的移植:

  在OS_CPU_C.C 中需要編寫10 個相關的函數(shù),為:OSTaskStkInit();OSTaskDellHook();OSTaskIdleHook ();OSTaskTickHook()等函數(shù)。其中9 個系統(tǒng)Hook函數(shù)可以為空函數(shù),也可以根據(jù)用戶自己的需要編寫相應的操作代碼。任務棧結(jié)構(gòu)初始化函數(shù)OSTaskStkInit()必須根據(jù)移植時統(tǒng)一定義的任務堆棧結(jié)構(gòu)進行初始化。

  OS_CUP_A.ASM 的移植。

  μC/OS-II 移植要求編寫的匯編語言函數(shù)為:

  OSStartHightRdy();OSCtxSw();OSIntCtxSw();OS_TickISR()。當然這些程序不一定非得用匯編,也可以用嵌入式C 語言來完成。

  至此,完成μC/OS-II 在ARM7 處理器LPC2378上代碼的移植,其大部分代碼與μC/OS-II 在其他ARM7 處理器上的移植是通用的。

  1.2 USB 驅(qū)動程序設計

  μC/OS-II 提供了多任務實時操作系統(tǒng)的內(nèi)核。在應用這個操作系統(tǒng)時候,用戶通常需要自己編寫基于μC/OS-II 的外圍器件驅(qū)動程序,以使外圍器件能在操作系統(tǒng)的協(xié)調(diào)下更好的為用戶服務。為了使軟件可移植性強,易維護,采用分層的方法編寫USB 的驅(qū)動程序。綜合考慮USB 協(xié)議、USB 硬件接線、μC/OS-II的結(jié)構(gòu)來進行分層,下表所列為USB 驅(qū)動程序分層結(jié)構(gòu)。

  1.2.1 USB 硬件抽象層。

  USB 硬件抽象層的主要任務是對USB 模塊的相關硬件進行配置,是USB 驅(qū)動程序的最底層與具體硬件相關的一層。主要完成的任務:初始化USB 設備控制器為系統(tǒng)配置USB 時鐘控制器,選擇信號映射端口(在LPC 系列中只有LPC2378 有此功能),配置電源;配置USB 設備控制器中斷,此系統(tǒng)禁止了同步傳輸幀中斷,使端點處于低優(yōu)先級中斷;以及配置軟件控制接連、斷開和重新連接USB 功能的相關寄存器。

  1.2.2 USB 命令接口層。

  USB 命令接口層是在USB 硬件的角度來描述USB 的具體功能是獨立于操作系統(tǒng)之外的,也是協(xié)議層和驅(qū)動層實現(xiàn)的基礎。USB 命令接口層函數(shù)基本是和具體的USB 寄存器相關的,通過操作寄存器完成相應的功能。

  1.2.3 USB 協(xié)議層。

  USB 協(xié)議層主要由 Descriptor.c 和Chap_9.c 文件組成。在Descriptor.c 定義了各描述符,是在USB 硬件的基礎上描述此讀卡器的USB 模塊,分別為:設備描述符、配置描述符、接口描述符和端點描述符。這些描述符也是上位機枚舉、識別讀卡器USB 模塊的媒介。而Chap_9.c 就是上位機枚舉讀卡器USB 模塊時USB 模塊回饋上位機的具體實現(xiàn),其中大部分函數(shù)都是依賴于USB 命令接口層。

  1.2.4 USB 驅(qū)動層。

  USB 驅(qū)動層是屬于USB 驅(qū)動程序中最上層的是與μC/OS-II 系統(tǒng)聯(lián)系最緊密的一層。在其他各層的基礎上從系統(tǒng)的角度描述了USB 通信功能,是與操作系統(tǒng)和應用程序直接聯(lián)系的一層。包括系統(tǒng)啟動時初始化USB 硬件的接口以及等待接收主機枚舉過程發(fā)送的SETUP 包等函數(shù)的接口。其中USB 端點的讀寫函數(shù)USB_ReadPort(INT8U endp, INT32U eppsize,INT8U buffnums, CTRL_USB *pUsb, INT32U len,INT8U *recbuff, INT16U timeout) 和USB_WritePort(INT8U endp, INT32U eppsize, INT8Ubuffnums, CTRL_USB *pUsb, INT8U *sendbuff,INT32U len, INT16U timeout)實現(xiàn)了接收上位機的請求和將處理結(jié)果返回給上位機。

  以讀函數(shù)為例描述USB 接收上位機請求的過程,由函數(shù)原型的最后一個參數(shù)timeout 可知,讀過程是一種阻塞性的操作,在此系統(tǒng)中是以信號量的方式來實現(xiàn)阻塞型的讀操作的。在參數(shù)檢測無誤時調(diào)用USB_WaitEpReady(pUsb, timeout)以獲取該端點對應信號量,若獲取失敗則此端點無數(shù)據(jù)可讀。當上位機發(fā)送數(shù)據(jù)到相應的端點時會產(chǎn)生中斷,中斷處理程序會判斷哪個端點產(chǎn)生了中斷,然后發(fā)送此端點所對應的信號量,這樣USB_WaitEpReady(pUsb, timeout)就可以獲得信號量完成讀操作,否則程序會等待timeout時間,如果在timeout 時間內(nèi)依然獲取信號量失敗那程序就出錯返回。若讀取長度大于端點緩沖區(qū)的長度的話則一次只能讀取端點緩沖區(qū)長度數(shù),分多次讀取,直到讀取規(guī)定長度為止。寫端點函數(shù)發(fā)送過程和讀端點函數(shù)接收過程實現(xiàn)流程大體相似,其中最大的區(qū)別就是中斷產(chǎn)生的時機不同,接收過程是在數(shù)據(jù)到達相應端點緩沖區(qū)時產(chǎn)生中斷,而發(fā)送過程是將數(shù)據(jù)寫到相應端點緩沖區(qū)之后才產(chǎn)生中斷。這樣在將數(shù)據(jù)發(fā)往相應緩沖區(qū)后再調(diào)用USB_WaitEpReady(pUsb,timeout),若在此函數(shù)中成功獲得信號量則說明發(fā)生成功。

  2 USB系統(tǒng)軟件設計

  USB 的系統(tǒng)軟件是與μC/OS-II 操作系統(tǒng)和業(yè)務應用模塊緊密關聯(lián)的。在μC/OS-Ⅱ?qū)SB 進行初始化時,不但要對USB 硬件接口初始化,還需要對其相關軟件進行初始化,比如:設置中斷處理函數(shù),以及單獨創(chuàng)建一個TaskSetup 任務以完成上位機對USB 系統(tǒng)主機的枚舉。中斷處理過程采用的是非向量中斷的方式,首先由中斷狀態(tài)寄存器的值判斷中斷產(chǎn)生的原因,然后由不同的原因設置不同的中斷處理函數(shù)。如果是數(shù)據(jù)中斷話則在相應的中斷處理函數(shù)中發(fā)送對應端點的信號量,這樣USB 驅(qū)動程序中讀寫接口才能成功被調(diào)用。TaskSetup 是系統(tǒng)的第一個任務,只有在TaskSetup 任務中USB 主機系統(tǒng)被成功枚舉后才能進行通信。枚舉過程主要是通過0 號端點的控制傳輸方式進行的,在此過程中USB 主機系統(tǒng)接收上位機發(fā)送的Setup 包,然后根據(jù)Setup 包的不同請求進行相應的處理再通過控制端點將結(jié)果返回給上位機。在USB 中0 號端點為控制端點一共有2 個分別為輸入和輸出端點。設備枚舉其實就是一個上位機識別USB 主機系統(tǒng)的過程,標準USB 枚舉過程如下:獲取設備描述符、復位、設置地址、再次獲取設備描述符、獲取配置描述符、獲取接口和端點描述符、獲取字符串描述符、選擇設備配置。枚舉成功之后USB 主機系統(tǒng)處于就緒狀態(tài)并且配置所有的接口與端點。

  在USB 體系結(jié)構(gòu)中數(shù)據(jù)的交互是以端點為基本單位的,端點的集合表現(xiàn)為接口,在USB 協(xié)議中一個接口表現(xiàn)為一個功能。USB 協(xié)議中規(guī)定端點0 只用于控制傳輸?shù)?,其余端點用于數(shù)據(jù)傳輸。本USB 主機系統(tǒng)的數(shù)據(jù)傳輸方式為端點1 采用中斷傳輸,端點2 采用批量傳輸。不論哪種傳輸方式都是以中斷的方式和系統(tǒng)交互的,但在中斷處理程序中所做的工作非常少只是發(fā)送信號量,真正與數(shù)據(jù)相關的操作并沒有在中斷處理程序中。這種中斷理念是根據(jù)Linux 操作系統(tǒng)的中斷上下文思想而設計的:使中斷時間盡量的短,將一些對時間要求不是那么嚴格的事務延遲在中斷之外進行。在Linux 中把中斷處理分為上下兩部分,中斷處理程序是上部分,收到一個中斷后它會立即執(zhí)行,但只做有嚴格時限的工作例如對接收到的中斷進行應答或硬件復位,能夠被允許稍后完成的工作推遲到下半部去。比如網(wǎng)卡:數(shù)據(jù)包的接收是至關重要的以提高網(wǎng)絡吞吐量和傳輸周期以及避免超時,處理和操作數(shù)據(jù)包的其他工作被推遲到下半部執(zhí)行。

  3 結(jié)語

  隨著電腦外設和數(shù)碼產(chǎn)品的不斷發(fā)展,各種設備之間的互連成為當前需要解決的難題。USB 是現(xiàn)今PC領域廣泛運用的總線接口技術(shù),在一些嵌入式系統(tǒng)中,人們希望有USB 的出現(xiàn),然而和系統(tǒng)其他模塊相比,USB 模塊顯得更加的復雜。本文詳細闡述了設計一個USB 主機系統(tǒng)的過程,綜合考慮USB 協(xié)議,USB 硬件連接和μC/OS-II 系統(tǒng)使軟件易于維護,移植型強。

本站聲明: 本文章由作者或相關機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

2025年8月13日 – 提供超豐富半導體和電子元器件?的業(yè)界知名新品引入 (NPI) 代理商貿(mào)澤電子 (Mouser Electronics) 即日起開售Asahi Kasei Microdevices (AKM) 的...

關鍵字: 數(shù)模轉(zhuǎn)換器 USB 無線揚聲器

物聯(lián)網(wǎng)與智能化設備快速普及,供電方式的選擇直接影響設備部署的靈活性、成本與可靠性。PoE(以太網(wǎng)供電)與USB供電作為兩大主流技術(shù),分別在工業(yè)網(wǎng)絡、智能家居、消費電子等領域占據(jù)關鍵地位。本文將從設備適配性、傳輸距離、功率...

關鍵字: PoE USB

在無線技術(shù)的發(fā)展歷程中,部署的簡便性往往是成功的關鍵。像Wi-Fi、藍牙和早期的蜂窩技術(shù),只有在集成變得簡單、無縫且實惠時,才能實現(xiàn)大規(guī)模的應用。而如今,Wi-Fi HaLow——一種專為物聯(lián)網(wǎng)(IoT)設計的遠距離、低...

關鍵字: 物聯(lián)網(wǎng) Wi-Fi USB

2025年8月5日 – 專注于引入新品的全球電子元器件和工業(yè)自動化產(chǎn)品授權(quán)代理商貿(mào)澤電子 (Mouser Electronics)即日起開售Microchip Technology的新款AVR? SD 8位MCU。AVR...

關鍵字: MCU 工業(yè)自動化 USB

隨著高解析度音頻應用的不斷發(fā)展和廣泛部署,諸如USB與I2S之間等不同專業(yè)接口之間的高品質(zhì)音頻轉(zhuǎn)換需求日益增長,由此帶來了實現(xiàn)高性能、高實時性與高靈活性的新挑戰(zhàn)。為此,邊緣AI和智能音頻專家XMOS攜手其全球首家增值分銷...

關鍵字: SoC USB 處理器

【2025年7月24日, 德國慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領域的半導體領導者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)近日推出新型英飛凌ID Key系列,進一步擴展其通用串行總線(USB)...

關鍵字: 控制器 USB 非易失性存儲器

其他電腦(比如安卓手機/平板電腦)的屏幕壞了,你可能想在安排維修之前緊急訪問一些東西。你可以使用android的USB OTG功能(是的,幾乎每個android都支持這個功能,你可以將鼠標和鍵盤連接到它)。

關鍵字: USB 鼠標 Android 樹莓派

M5Stack Cardputer非常適合作為硬件密碼管理器。它很小巧,有一個內(nèi)置鍵盤,一個SD卡插槽,運行在帶有本地USB支持的ESP32-S3上。屏幕使其易于使用,并且由于USB HID,它可以直接在登錄字段中鍵入密...

關鍵字: 密碼管理器 M5Stack Cardputer USB

【2025年7月10日, 德國慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領域的半導體領導者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)為CIS的新款USB 5 Gbit/s和10 Gbit/s攝像頭提供E...

關鍵字: 控制器 USB 圖像信號處理器

Holtek 針對USB應用推出HT82B45R低速USB OTP MCU,符合USB 2.0低速規(guī)范,支持鍵盤用的高阻抗碳膜技術(shù)(Carbon Membrane)。HT82B45R結(jié)合低功耗設計、彈性I/O配置、內(nèi)建L...

關鍵字: MCU USB 看門狗定時器
關閉