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

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

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

3天內不再提示

基于實時操作系統和處理器實現USB打印機驅動系統的設計

牽手一起夢 ? 來源:微計算機信息 ? 作者:王利鋒,白瑞林 ? 2020-10-04 17:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 引 言

通常情況下,打印機、海量存儲等設備是由普通PC機來驅動的,由于大量的測控、醫療等系統需要存儲、打印數據,因此開發這類設備的嵌入式驅動是非常有實用價值的。目前,各種嵌入式設備基本上是通過軟盤存儲,并口打印的,而它們的存儲容量、數據傳輸速度已大大落后當前各類嵌入式系統的需求。因此,開發基于USB接口的嵌入式海量存儲設備和打印機驅動已成當務之急。

USB(Universal Serial Bus)是最近幾年逐步在PC領域廣為應用的新型串行接口技術,它通用性好、實時性強、傳輸方式多樣、成本低、易于擴展和使用,這些優點使它受到許多硬件廠商的青睞,各種類型的USB設備產品大量涌入市場。USB通訊必須是主機和外設通訊,每次通訊都是由主機發起,外設只是被動地執行主機發過來的命令。而市場上所買到和使用的USB 移動設備, 都是USB 的外設(device) , 如USB 的移動硬盤、USB 接口的數碼相機、打印機等。這些設備通常只能通過PC 來進行相互的文件和數據交換,沒有了PC 機, 這些設備就無法進行數據交換。而實際上并非每個地方都擁有PC機或者適合使用PC機,因此業界和用戶需求USB 主機的嵌入式化。也就是開發和設計嵌入式的USB 主機。

根據具體醫療儀器(酶標儀)的實際需要,我們在三星ARM7處理器 S3C44B0X上移植了實時操作系統(RTOS)——μC/OS-II,并編寫了基于USB主控制器芯片SL811的底層驅動。為了能將酶標儀所檢測的數據保存到外設(如U盤、移動硬盤)中,研究了對應的文件系統和UFI傳輸協議,實現了對FAT文件系統的海量存儲設備的讀寫。同時,為了打印霉標儀的檢測結果,研究了EPSON打印機的ESC/P打印語言,實現了EPSON C63系列、C65系列、ME1打印機基于USB通訊的嵌入式打印機驅動。

2 嵌入式USB主機的硬件設計

酶標儀的硬件平臺核心為三星公司的S3C44B0X(主頻最高可達66MHz),它集成了ARM7TDMI核,LCD控制器,是一款適用于中端應用的微控制器。系統擴展包括:存儲器(8MB SRAM、2MB NOR Flash)、USB主從機(SL811HS)和按鍵等硬件資源。其中USB部分硬件連接如圖1所示。

基于實時操作系統和處理器實現USB打印機驅動系統的設計

圖1:硬件連接圖

SL811HS 是Cypress公司推出的一款嵌入式USB Host/S1ave芯片。支持USB1.1的全速和低速設備。提供USB主機的硬件接口及總線管理的物理機制。帶有在片的SIE和USB發送器以及在片的根集線器Hub。因此, 滿足了嵌入式USB 主機系統所需要的功能, 即由主機接口芯片來完成總線底層物理數據包的發送、接收, 并能檢測總線狀態, 發出中斷請求。所以, 選擇SL811HS 作為本系統的USB接口芯片是合適的。

如圖2所示,ARM通過Cs3片選SL811HS來確定SL811HS的基地址。D0-D7為數據和地址的復用線,并通過A0來區分,當A0為“0”的時候,D0-D7上傳輸的是偏移地址;反之,當A0為“1”的時候,D0-D7作為數據線用。

3 嵌入式USB主機的軟件設計

3.1 嵌入式USB主機的軟件總體框架

系統的軟件平臺核心為μC/OS-II,它是一個源碼公開的、占先式多任務管理的實時操作系統內核,其性能完全可與許多商業產品競爭,已在相當多的系統中得到成功應用,是一個經實踐證明穩定可靠的內核,且其核心代碼短小精悍,簡單易學。

USB 主機為USB系統提供的功能有:(1) 檢測USB 外設的接入和移出;(2) 管理主機和外設之間進行的USB 標準流量控制;(3) 枚舉外設; (4) 管理主機和外設之間的數據流; (5) 搜集系統狀態和性能的統計信息;(6) 主機與外設之間的電氣接口,包括供電。

USB協議規定了人機接口設備HID 類、MassStorage 類、音頻類和打印類等一系列的設備類型, 用于支持不同的設備。根據實際需要,我們開發了USB接口的海量存儲類設備和基于ESC/P打印語言的EPSON打印機嵌入式驅動程序。具體驅動程序棧如圖2所示。該系統支持熱插拔,可以知道識別插上是哪種設備,并調用對應的驅動。

圖2:USB驅動程序棧

3.2 USB Mass Storage 類協議框架的實現

USB Mass Storage 類是USB 協議所定義的用來磁盤管理及大容量數據傳輸的。USB定義了兩種海量存儲傳輸協議,它們分別是Buck-only Transport 和Control/Bulk/Interrupt(CBI) Transport。由于目前市場上所出現的海量存儲設備基本上都采用前者傳輸協議,即讀寫數據都是通過塊傳輸來實現通訊。在命令包CBW (Command Block Wrapper)中包含了標志信息,數據長度以及UFI命令等信息。其中UFI命令含有格式化磁盤、讀磁盤、寫磁盤和讀磁盤容量等一系列磁盤管理命令。

大部分移動存儲設備都采用FAT文件系統來管理文件。整個文件系統通過Mass Storage 的UFI 命令與外設的磁盤建立聯系。FAT文件系統將海量存儲設備上的數據大致分成5個部分:MBR區(主引導區)、DBR區(系統引導區)、FAT區(文件分配表)、FDT區(文件目錄表)和DATA區(數據區)。當有USB接口的海量存儲設備插上后,系統讀取MBR區和DBR區來獲得每扇區字節數,每簇扇區數,FAT表個數等文件系統基本信息。獲取這些基本信息后從海量存儲設備讀取一個文件的流程如圖3示。因寫文件和讀文件的流程沒有很大的差別,在此就不累述了。

圖3讀文件流程圖

3.3 基于ESC/ P打印控制語言的打印機驅動設計

EPSON公司的打印機基本上都是基于ESC/ P打印控制語言的,不同系列的打印機的控制語言沒有太大的差別。因此,我們開發的驅動程序具有比較強的通用性,針對EPSON的C63系列打印機開發的驅動完全適用C65系列和ME1打印機。

各種型號打印機的編程手冊可以到EPSON的開發網站上下載。編程手冊對各種控制命令作了詳細介紹,如初始化打印機(ESC @)、選擇圖形方式( ESC (C nL nH m )、設置單元大小(ESC (U nL nH m )、打印光柵圖像命令(ESC 。 c v h m N1 Nh d1 ?dk)等。

EPSON打印機提供兩種打印方式,一種是用來打印文本文件,用該方式打印英文字母、阿拉伯數字、符合的時候向打印機發對應的控制命令后,只要直接發打印內容的ASCII碼即可。另一種方式是用來打印光柵圖形,當需要打印表格、圖片和漢字的時候時往往會用到這種方式。在此,列出幾個關鍵API函數并予已說明:

print_image_init ( void ):因為打印機初始化后默認為打印文本模式,所以要打印光柵圖形必須進行相關的初始化。

print_image_command(unsigned int horiz_position,unsigned int verti_position, unsigned char rows, unsigned int columns, char color):調用該函數之前必須事先至少調用過一次print_image_init(),它的功能是向打印機發打印圖片命令。其中,第一和第二個輸入參數是打印圖形的橫縱坐標,第三和第四個輸入參數分別是打印圖形的行數和列數(特別值得注意的是,C63系列和C65系列打印機一次最多可打16行,而 EPSON M1一次只能打15行),第五個輸入參數color是選擇打印顏色。在調用該函數后,直接向打印機發打印的數據就可以實現打印圖片功能了。迎訪問無由電子開發網(技術文章 在線閱讀 在線商城

由于打印文本模式和打印圖形的操作基本相同,而且更簡單,在此就不作說明。

3.4 USB協議的實現

這是整個USB 體系軟件的根基, 它負責主機和設備之間數據傳輸。其代碼都包含在文件sl811host.c中,可供上層驅動調用的API函數主要有:

EnumUsbDev ():該函數主要實現枚舉設備的功能。當有USB設備插上時,系統通過調用到該函數得到設備的標準描述符(接口、配置、端點)并識別是海量存儲設備還是打印機。設置地址(SetAdress),設置配置描述符(SetDecriptor),設置配置值(SetConfiguration),設置接口(SetInterface)也在該函數里實現。

BuckSend():該函數主要實現主機上的數據通過塊傳輸方式發送到設備上;

BuckReceive():塊傳輸接受函數;

BuckSend()和BuckReceive()兩個函數是最調度最平凡的兩個函數,因為對海量存儲設備的讀寫,對打印機發送控制命令、打印數據都是通過塊傳輸通訊的,也就是通過調用這兩個函數來實現的。

處理器讀寫SL811HS單個寄存器或數據存儲器的函數如下:

void SL811Write(char a, char d){SL811_ADDR = a;SL811_DATA = d;}

char SL811Read(char a){SL811_ADDR = a; return (SL811_DATA);}

這兩個函數是ARM處理器和SL811芯片進行數據交互的基石,所有控制寄存器和數據存儲器的讀寫都可以通過以上兩個函數來實現。當需要連續讀寫SL811中的儲存器時可以采用以下方式來實現,可以加快讀寫速度。

void SL811BufWrite(BYTE addr, BYTE *s, BYTE c)

{SL811H_ADDR = addr;

while (c--)

SL811H_DATA = *s ;}

4 結 論

在基于實時內核μC/OS-II和32位RISC架構ARM7 Core的系統板上,我們實現了嵌入式USB主機設計和開發,為酶標儀這一特定醫療設備提供了讀寫海量存儲設備和打印的功能。經測試,本系統讀海量存儲設備數據的速度可達750kB/s,寫數據的速度最高可達450kB/s;打印功能也完全滿足系統要求,性能穩定可靠,使用方便,是一種可行、實用的方案。

責任編輯:gt

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

    關注

    68

    文章

    19885

    瀏覽量

    235068
  • 嵌入式
    +關注

    關注

    5149

    文章

    19659

    瀏覽量

    317360
  • 操作系統
    +關注

    關注

    37

    文章

    7143

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    桌面運維工具之打印機驅動安裝

    window系統中 人工安裝需要經過三個步驟,操作繁瑣,效率較低。基于此,我們想開發一個自動化安裝打印機驅動的程序,讓用戶可以自行安裝打印機
    的頭像 發表于 09-12 15:29 ?2372次閱讀
    桌面運維工具之<b class='flag-5'>打印機</b><b class='flag-5'>驅動</b>安裝

    基于uC/OSⅡ操作系統的流水打印機設計

    ,LPC2138(ARM7內核)微控制的流水打印機;ARM以其高性能低功耗的特性成為目前應用最廣泛的32位嵌入式處理器,而嵌入式操作系統uC/OS II也憑其源碼公開、可移植、可固化
    發表于 04-24 09:23

    開啟組件服務讓你的打印機能在Windowsxp系統打印機驅動程序中操作

    操作系統Windowsxp自帶有佳能BJC-5500及其他品牌的打印機驅動程序,不需要另外下載安裝驅動程序,除非列表中沒有的其他品牌的打印機
    發表于 12-09 23:00

    樹莓派之無線打印機

    ` 本帖最后由 348081236 于 2016-1-6 16:08 編輯 只需要百來塊的樹莓派A型、電源、SD卡和USB無線網卡(要能支持Raspbian或其他操作系統)和打印機,你就能得到
    發表于 01-06 16:05

    打印機在word不能打印是什么原因

    打印機”,沒有就還沒有安裝打印機驅動程序。如果是 xp 操作系統,在“我的電腦”上右鍵——“管理”——“設備管理”,打開“設備管理
    發表于 01-09 15:27

    打印機在word不能打印是什么原因

    打印機”,沒有就還沒有安裝打印機驅動程序。如果是 xp 操作系統,在“我的電腦”上右鍵——“管理”——“設備管理”,打開“設備管理
    發表于 03-31 00:08

    采用CH375接口電路實現LPT-USB打印機驅動器設計

    USB接口而非并行口,因此現有儀器對打印機的支持不能適應用戶需要。為了使該公司的并行口儀器直接和USB打印機相連,筆者設計了一種LPT-USB
    發表于 06-18 05:00

    Android系統上的USB打印功能怎么實現

    Android作為基于Linux開放性內核的開源智能手機操作系統,為智能手機、平板等移動、嵌入式設備應用提供了便捷的系統級支持,但Android系統目前并不支持常用的USB
    發表于 03-11 07:13

    如何利用單片機和USB總線接口芯片實現LPT-USB打印機驅動器設計

    本文利用單片機和USB總線接口芯片實現LPT-USB打印機驅動器設計。利用該設計將能夠實現并行
    發表于 04-26 06:36

    打印機的兼容操作系統

    打印機的兼容操作系統              兼容操作系統這項指標,就是指打印機
    發表于 12-29 10:33 ?1069次閱讀

    針式打印機的兼容操作系統

    針式打印機的兼容操作系統              兼容操作系統這項指標,就是指打印機
    發表于 12-30 12:53 ?1583次閱讀

    大幅面打印機操作系統

    大幅面打印機操作系統              操作系統指的是產品可以在哪些操作系統
    發表于 12-30 17:04 ?1055次閱讀

    基于FPGA和VHDL的微型打印機控制的設計和實現

    硬件電路以FPGA為中心,實現存儲器的接口電路設計,以及對打印機的并口接口電路設計。設計的微型打印機的控制已經系統調試,該控制器具有較強的
    發表于 01-22 13:42 ?2689次閱讀
    基于FPGA和VHDL的微型<b class='flag-5'>打印機</b>控制<b class='flag-5'>器</b>的設計和<b class='flag-5'>實現</b>

    XP系統USB共享打印機安裝指引

    XP系統USB共享打印機安裝指引適用于各種環境,更換參數即可。
    發表于 03-22 11:40 ?4次下載

    打印機驅動怎么刪除

    打印機驅動程序(Printer Driving Program),是指電腦輸出設備打印機的硬件驅動程序。它是操作系統與硬件之間的紐帶。只有安
    的頭像 發表于 04-12 15:59 ?1.7w次閱讀