<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 新興微型光學(xué)手指導航模組的嵌入式系統開(kāi)發(fā)

新興微型光學(xué)手指導航模組的嵌入式系統開(kāi)發(fā)

作者: 時(shí)間:2011-04-13 來(lái)源:網(wǎng)絡(luò ) 收藏

  具有EOS的軟件,OFN驅動(dòng)程序需要遵循相應EOS公用驅動(dòng)程序的編寫(xiě)、調試、加/卸載要求,如Windows CE/Mobile的單/雙層、本地/流接口驅動(dòng)、動(dòng)態(tài)庫形式,ARMLinux的字符設備驅動(dòng)、動(dòng)態(tài)加/卸載、VxWorks的I/O設備驅動(dòng)等。OFN驅動(dòng)程序傳播的是公用的人機交互輸入信息,必須為公用驅動(dòng)程序。EOS驅動(dòng)程序可以劃分為專(zhuān)用驅動(dòng)程序或公用驅動(dòng)程序兩大類(lèi),公用驅動(dòng)程序軟件要求很高,需要根據具體EOS的特點(diǎn)和要求,認真編寫(xiě)、調試和測試。

  3 應用實(shí)踐

  在各類(lèi)應用使用OFN,軟硬件體系設計的核心是OFN驅動(dòng)程序的實(shí)現,其關(guān)鍵在于OFN數據信息的實(shí)時(shí)采集和具體EOS下公用信息的形成。下面針對一些最常見(jiàn)的OFN應用設計實(shí)踐,加以闡述。其中涉及的I2C、SPI、UART、LCD(Liquid Crystal Display)、定時(shí)器(Timer)、GPIO(General Port Input/Output)等的軟件驅動(dòng)操作,限于篇幅,這里不再著(zhù)重說(shuō)明。

  3.1 工業(yè)測控/儀表儀器應用

  工農業(yè)過(guò)程控制、儀表儀器設備、器件性能檢測等軟件體系或ERTOS下的OFN應用,可以采用外部事件中斷或定時(shí)器查詢(xún)的方式,在其中斷服務(wù)程序中直接操作I2C或SPI總線(xiàn),高效地從OFN中獲得觸控信息,并進(jìn)行屏幕指示、操作控制或數據的存儲、轉發(fā)等活動(dòng)。

  下面的例程代碼(見(jiàn)網(wǎng)絡(luò )版)展示了ARM926T內核的S3C2440微處理器平臺上測試OFNA2815性能的情形。中斷服務(wù)程序中進(jìn)行I2C或SPI總線(xiàn)操作,獲得觸控信息,在LCD屏上以“鼠標”形式隨動(dòng)顯示,并通過(guò)UART接口上傳數據給PC機。

  3.2 Nucleus MTK手機應用

  聯(lián)發(fā)科技MediaTek推出的各種款式功能手機,以高度的性?xún)r(jià)比具有極高的市場(chǎng)份額,其內核是ARM7EJS或ARM9EJS微處理器,在MentorATI的優(yōu)先級搶占調度和時(shí)間片輪轉的多任務(wù)ERTOS--Nucleus基礎上,形成了完整的人機接口MMI(Man Machine Interface)應用程序體制,俗稱(chēng)“MTK”。Nucleus MTK多數情況下采用可管理的逐級中斷機制:低級中斷LISR(Lower ISR)→高級中斷HISR(High ISR)→中斷任務(wù)處理ISR(Interrupt Serve Routine)。ISR可以與其他任務(wù)進(jìn)行通信或同步的交互。

  Nucleus MTK系統不支持鼠標,但支持鍵盤(pán)和觸摸屏操作,而觸摸屏操作最終歸結在鍵盤(pán)操作上。因此在Nucleus MTK下應用OFN模組,需要把OFN的“觸控”信息轉換為“方向動(dòng)作”信息,進(jìn)而廣播為可以公用的“方向按鍵”信息,從而為多數現有的和未來(lái)的應用程序所共享。不容忽視的是必須實(shí)現高度頻繁的OFN信息與緩慢的方向按鍵之間的合理匹配,可以通過(guò)均值濾波和邏輯分析進(jìn)行取舍算法達到這一目的。

  需要注意的是,Nucleus MTK軟件體系層次和等級較為嚴格,高低層之間除了通信、同步和信息傳遞,一般不允許函數互相調用;同時(shí),為保證中斷響應的及時(shí)性,不應在中斷服務(wù)程序中作過(guò)多的停留,因此傳統的設備驅動(dòng)及其分析處理需要放在不同的層次上,按輕重緩急,分別加以實(shí)現。

  按照上述Nucleus MTK的設備驅動(dòng)規范和OFN信息的運用機理,設計OFN模組的Nucleus MTK軟件應用如下:定義OFN特定消息結構,分配中斷形式和總線(xiàn)接口;實(shí)時(shí)獲取OFN移動(dòng)信息,取舍處理后,打包成OFN消息包,上傳MMI應用處理層;MMI應用處理層拆包分析,變換成方向按鍵的“按下”和“釋放”消息,進(jìn)而廣播給整個(gè)系統。相關(guān)的關(guān)鍵程序如下:

 ?、?基本設置。增加全局操作常量MSG_ID_MMI_OFN_MOVE_REQ,定義OFN消息結構體ofn_hdr_ind_struct{LOCAL_PARA_HDR, kal_uint8 Direction},并在系統自定義設備驅動(dòng)的初始化文件中加入對OFN初始化函數的調用。

 ?、?底層驅動(dòng)程序設計。限于篇幅,這里僅列出I2C接口的定時(shí)器中斷查詢(xún)實(shí)現。

 ?、?公用信息形成。在上層主要程序文件MMITask.c中添加代碼。

  3.3 Windows CE/Mobile應用

  Windows CE/Mobile是一款在系統,特別是智能手機中,廣泛應用的EOS。Windows CE/Mobile按照“物理中斷IRQ(Interrupt ReQuest)→邏輯中斷SYSINTR(System Interrupt)→中斷服務(wù)線(xiàn)程IST(Interrupt Serve Thread)”的層層映射方式進(jìn)行中斷處理,其設備驅動(dòng)程序以用戶(hù)態(tài)下的DLL(Dynamic Link Library)文件形式存在,區分為本地與流接口驅動(dòng)、獨立與雙層驅動(dòng),可以在系統啟動(dòng)時(shí)自動(dòng)加載或動(dòng)態(tài)加載。啟動(dòng)時(shí)加載的驅動(dòng)程序,需要特別進(jìn)行注冊表的配置添加。

  OFN模組及其應用特點(diǎn)決定了在Windows CE/Mobile下,其驅動(dòng)程序宜設計為獨立的本地驅動(dòng)形式,并在系統啟動(dòng)時(shí)能夠自動(dòng)加載。Windows CE/Mobile支持鼠標操作,有鼠標消息結構體的系統定義,可以用來(lái)簡(jiǎn)化OFN的驅動(dòng)程序。OFN模組的Windows CE/Mobile軟件應用可以完全在驅動(dòng)程序中實(shí)現,中斷服務(wù)程序的編寫(xiě)和系統注冊表的配置添加是OFN模組Windows CE/Mobile驅動(dòng)程序設計的關(guān)鍵。以I2C總線(xiàn)接口、外部中斷事件觸發(fā)方式說(shuō)明OFN模組Windows CE/Mobile驅動(dòng)程序的具體實(shí)現,核心微處理器為ARM926T內核的S3C2440。

  3.4 ARMLinux/Android應用

  ARMLinux/Android是一個(gè)源碼開(kāi)放、音/視頻性能優(yōu)良、網(wǎng)絡(luò )功能強大、易于擴展開(kāi)發(fā)的EOS及其應用體系,一經(jīng)推出就在便攜式移動(dòng)通信、筆記本電腦等諸多領(lǐng)域得到了廣泛運用。其底層多是基于CortexA8/A9、ARM1176、ARM9EJS等內核的微處理器。Linux下設備驅動(dòng)規范是將設備視作文件操作,稱(chēng)為“設備文件”,應用十分方便。其設備驅動(dòng)程序分為字符型、塊型和網(wǎng)絡(luò )型三類(lèi),系統的大多數外設或接口都可以作為字符型設備進(jìn)行驅動(dòng)。根據應用的特點(diǎn),Linux將所有輸入設備歸為可以數據緩沖的鏈表結構的字符型輸入子類(lèi)(Input),包括鼠標、鍵盤(pán)、觸摸屏等,其中鼠標類(lèi)驅動(dòng)(mousedev)架構體系十分完備。ARMLinux/Android體系的這些特征,使得OFN模組的驅動(dòng)應用開(kāi)發(fā)簡(jiǎn)便了很多:可以按照鼠標類(lèi)驅動(dòng)的實(shí)例化方式,快速實(shí)現OFN的驅動(dòng)程序設計。Linux驅動(dòng)可以動(dòng)態(tài)加載,也可以在啟動(dòng)時(shí)加載;OFN設備使用頻繁,宜選擇啟動(dòng)時(shí)加載。這里以常見(jiàn)的TI推出的CortexA8內核的OMAP3530微處理器平臺為例,關(guān)鍵的程序代碼略--編者注。

  4 結語(yǔ)

  手指模組,性能高度集成,成本低,形體小,在嵌入式應用系統中備受青睞。只要按照各種嵌入式應用體系的具體特點(diǎn),遵循各類(lèi)嵌入式體系及其操作系統下驅動(dòng)軟件的開(kāi)發(fā)規律,并因地制宜,具體情況具體分析,就可以無(wú)縫地將其融入到各個(gè)已有的嵌入式應用軟硬件體系中,并拓展到新的嵌入式應用產(chǎn)品中。不斷豐富完善的微型手指模組,應用前景極好,推動(dòng)著(zhù)人機輸入界面的深遠變革和長(cháng)足發(fā)展。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>