999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于S3C2440與WinCE平臺上的FIQ驅動程序的實現

2012-11-24 02:17:46開元海
網絡安全與數據管理 2012年24期
關鍵詞:系統

開元海,汪 超,鄭 勇

(1.貝加萊工業自動化西安分公司,陜西 西安710075;2.臺州職業技術學院 機電工程學院,浙江 臺州318000;3.安徽省滁州市第一職業高級中學,安徽 滁州239002)

Microsoft Windows CE是一個 32位、緊湊、高效、可擴展的操作系統,適用于各種嵌入式系統和產品。它擁有多線程、多任務、確定性的實時、完全搶占式優先級的操作系統環境,專門面向只有有限資源的硬件系統。同時,它的模塊化設計方式使得系統開發人員和應用開發人員能夠為多種多樣的產品來定制它,可以選擇、組合和配置Windows CE的模塊和組件來創建用戶版的操作系統[1]。良好的用戶界面使其在導航儀等消費類電子中得到了廣泛的應用。在工業控制方面,有少數廠家以它作為內核開發工業控制器,也有一些廠家只是作為終端顯示設備。在外圍沒有CPLD、FPGA或DSP協同工作的情況下,對于實時性較高的應用場合一般不會選擇WinCE。

本文以步進電機驅動程序為例,針對普遍使用的IRQ中斷,提出用ARM處理器的FIQ中斷在實時性能要求高的場合中的應用方法,可以大大提高控制系統實時處理能力,進而可以替代某些場合中使用的專用芯片或PLD芯片來滿足性能要求,以節約成本,降低功耗。

1 IRQ中斷過程簡述

對于一個硬件中斷,系統內核在捕獲之后,會交給OEMInterruptHandler函數處理,這個函數就是實現中斷處理的中心函數。函數可以從CPU的寄存器里獲得中斷的信息,這些信息可以指出是哪個中斷源觸發了中斷。

在得到觸發中斷源信息后,最簡單的中斷處理辦法就是在OEMInterruptHandler中直接對中斷源進行判斷,然后調用服務程序。

另一種中斷處理辦法是應用程序建立中斷服務線程(IST),然后申請一個系統邏輯中斷號(SYSINTR),創建一個事件(Event),使用InterruptInitialize函數將 Event與SYSINTR綁定,隨后 IST阻塞在等待Event上面。當硬件中斷發生后,OEMInterruptHandler只給系統返回一個SYSINTR,用來標記需要哪個程序來服務中斷,系統根據綁定關系激活相應的Event,使得隨后的 IST得以運行。在中斷處理完成之后需要調用 InterruptDone,參數為該中斷的SYSINTR,用來通知系統中斷處理完成,系統重新使能該中斷。這種處理方法可以使中斷被關閉、系統被鎖定的時間最短。此外,還需要實現OEMInterruptEnable和OEMInterruptDisable函數來改變處理器中斷屏蔽寄存器[2]。處理過程如圖1所示。

當使用上文所述IRQ中斷服務程序結構時,為了使實時性更好,采用直接在OEMInterruptHandler中對中斷源進行處理的方式對步進電機驅動器Q2HB44MA和步進電機57BYGHM403進行控制。由于中斷優先級和響應速度的原因,步進電機在旋轉過程中產生劇烈振動,根本無法在實際應用場合中使用。

2 FIQ中斷驅動程序在WinCE系統中的實現

2.1 ARM處理器快速中斷FIQ

FIQ和IRQ是ARM處理器中兩種不同類型的中斷。FIQ比IRQ有更高優先級,如果FIQ和IRQ同時產生,那么先處理FIQ。當CPU處于FIQ模式處理FIQ中斷的過程中,預取指令異常,未定義指令異常,軟件中斷全被禁止,所有的中斷被屏蔽。所以FIQ會很快被執行,不會被其他異常或者中斷打斷。而IRQ不一樣,當ARM處于IRQ模式處理IRQ中斷時,如果來了一個FIQ中斷請求,那么正在執行的IRQ中斷處理程序會被搶斷,ARM切換到FIQ模式去執行該FIQ中斷[3]。

2.2 步進電機加減速實現

步進電機在啟動或停止時若步進脈沖變化太快,轉子由于慣性而跟隨不上電信號的變化,會產生失步或超步現象。一般來說對于電機起始轉速小于2 r/s時,根據負載情況可能不會出現失步或超步的現象。但在轉速較高、負載較大的情況下,為了避免失步或超步現象,通常采用加減速控制。加減速過程需要設定步進電機的起始頻率、穩定頻率和加速時間,但是在控制中則需要計算出加速過程所需要的脈沖個數。對于加速過程有以下關系式:

經過化簡計算得:

其中:fa為起始頻率,fΔ為每步增長的頻率,fb為穩定頻率,t為加速時間,n為加速過程脈沖數量。

2.3 添加步進電機結構和IOCTL接口

WinCE操作系統設計借鑒了Windows 2000/XP操作系統的設計,從體系結構上,它具有分層結構的特點,從上到下為應用程序層、操作系統層、OEM層和硬件層。OEM層是邏輯上位于硬件和操作系統之間的一層硬件相關代碼。它的主要作用是對具體的硬件進行抽象,抽象出統一的接口,然后WinCE內核可以使用這些接口與硬件進行通信,這樣在移植WinCE到新的硬件平臺時可以減少對操作系統的修改,通俗地說就是為WinCE操作系統抹平MCU的差異,使其能方便地移植到其他MCU上運行。OEM抽象層(OAL)是整個OEM層的主體,它包含了高度硬件相關的代碼,OAL主要負責WinCE內核與硬件交互。

為了能夠用WinCE的流接口驅動程序操作ARM處理器的FIQ中斷,需要修改WinCE系統OEM層中的OAL部分。在s2440.h文件中定義步進電機數據結構,包括起始頻率、穩定頻率、上升脈沖數、剩余脈沖數、當前上升/下降沿狀態等運行參數和狀態變量。

在oemioctl.c文件中定義步進電機結構的全局變量。為了使驅動程序可以訪問到此變量,使用WinCE系統的IOCTL接口。在WinCE5.0中,應用程序和驅動程序可以通過調用KernelIoControl()函數來訪問WinCE內核,導致調用OEMIoControl函數,這樣應用程序和驅動程序就可以訪問到OAL中的資源了,可以說OEMIoControl是一個很有用的WinCE內核輸入/輸出函數。在OEMIoControl函數中添加case語句使得驅動程序傳來的運行參數和運行/停止命令可以得到記錄和響應,在更新參數命令處理中把運行的參數賦值給步進電機結構變量;在開始運行命令處理中打開定時器FIQ中斷使能、設置定時器周期、開始定時器運行;在停止命令中記錄停止信息使得在當前脈沖循環完成后停止脈沖的輸出。

2.4 添加中斷處理過程代碼

由于在IOCTL的開始運行命令處理中打開了定時器的FIQ中斷使能,當定時器時間達到時,中斷服務程序不再是 OEMInterruptHandler,而是 FIQHandler。由FIQHandler調用OEMInterruptHandlerFIQ函數進行處理。

在armtrap.s匯編文件中的FIQHandler入口處,調用OEMInterruptHandlerFIQ函數的前后應該使用msr匯編指令添加禁止/使能FIQ中斷的操作。

在arminit.c文件的OEMInterruptHandlerFIQ函數中添加更新GPIO口輸出電平、脈沖計數、加減速/恒速狀態切換、定時器周期之更新等操作,如果當前發送脈沖為最后一個脈沖的下降沿,則需要關閉FIQ的中斷使能,這樣當脈沖發送完成后會產生普通IRQ中斷來觸發OEMInterruptHandler函數的調用,讓系統通知驅動程序當前運動任務的完成。

另外,還需要實現OEMInterruptEnable和OEMInterruptDisable函數來改變處理器中斷屏蔽寄存器。

2.5 驅動程序添加

驅動程序采用WinCE的普通流接口驅動程序,通過KernelIoControl接口對步進電機進行參數設置和啟/停控制,在設置參數之前應該使用式(2)計算加/減速脈沖個數。

綜合以上過程,采用FIQ中斷的處理流程圖如圖2所示。

3 試驗測試

文章采用Windows CE5.0嵌入式操作系統,結合ARM處理器的FIQ中斷機制,完成了步進電機驅動程序的實現,在這種機制下,很好地克服了采用普通IRQ中斷的驅動程序實時性能不高的問題,可以在實時性能要求較高的應用場合中應用。在試驗過程中可以看到,使用本文提出的采用FIQ中斷的驅動程序,可以平穩地輸出120 kHz的脈沖,遠遠超過普通步進電機驅動器最高輸入脈沖頻率的20 kHz。

本文針對采用普通IRQ中斷的驅動程序實時性能不高的問題,實現了使用ARM處理器的FIQ中斷來開發驅動程序。使用普通IRQ中斷的驅動程序來發送脈沖時,由于中斷優先級和響應時間的問題,步進電機產生劇烈振動,導致根本不能在實際應用中使用。實踐證明,驅動程序使用FIQ中斷是穩定的且能獲得比IRQ中斷更好的實時性能,合理采用可以替代某些場合中的專用芯片或PLD芯片,以節約成本,降低功耗。

[1]盧愛臣,王劍宇,郭偉,等.基于 WinCE自動控制臺的設計與實現[J].微計算機信息,2011(2):87-88.

[2]微軟公司.Windows CE設備驅動程序開發指南[M].北京:北京希望電子出版社,1999.

[3]杜春蕾.ARM體系結構與編程[M].北京:清華大學出版社,2003.

[4]何宗鍵.Windows CE嵌入式系統[M].北京:北京航空航天大學出版社,2006.

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 久久精品这里只有国产中文精品| 色男人的天堂久久综合| 国产精品19p| 欧美成人国产| 中文国产成人久久精品小说| 内射人妻无码色AV天堂| 欧美性色综合网| 亚洲va视频| 久久久亚洲色| 无码 在线 在线| 亚洲国产中文综合专区在| 欧洲亚洲一区| 国产爽歪歪免费视频在线观看| 国产精品理论片| 2018日日摸夜夜添狠狠躁| 国产福利微拍精品一区二区| 国产超碰一区二区三区| 58av国产精品| 欧美国产视频| 999精品视频在线| 亚洲制服丝袜第一页| 婷婷六月天激情| 婷婷六月在线| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲嫩模喷白浆| 中文字幕久久波多野结衣| 2020国产精品视频| 亚洲第一黄色网| 欧美精品在线免费| 人妻91无码色偷偷色噜噜噜| 久久久久国产一区二区| 欧美乱妇高清无乱码免费| 精品自窥自偷在线看| 人妻熟妇日韩AV在线播放| 精品视频一区二区观看| av在线无码浏览| 国产午夜人做人免费视频| 91久久精品国产| 欧美成人免费午夜全| 久久久噜噜噜| 老汉色老汉首页a亚洲| 91探花国产综合在线精品| 国产无码精品在线播放| 国产精品亚洲一区二区在线观看| 蜜芽国产尤物av尤物在线看| 成人国产三级在线播放| 国产第一色| 国产99免费视频| 黄色网在线免费观看| 国产网站免费看| 久久女人网| 91丨九色丨首页在线播放 | 国产欧美日韩免费| 久久精品人妻中文系列| 欧美区国产区| 妇女自拍偷自拍亚洲精品| 亚洲一区二区三区麻豆| 国产欧美性爱网| 婷婷六月综合网| 色综合久久久久8天国| 欧美A级V片在线观看| 亚洲V日韩V无码一区二区| 国产91导航| 一级毛片在线播放免费观看 | 国产精品浪潮Av| 波多野结衣第一页| 婷婷亚洲综合五月天在线| 国产嫖妓91东北老熟女久久一| 岛国精品一区免费视频在线观看| 97久久精品人人| …亚洲 欧洲 另类 春色| 黄色网址手机国内免费在线观看| 91网址在线播放| 国产欧美高清| 99久久精品国产自免费| 国产成人禁片在线观看| 日韩在线影院| 99草精品视频| 天天摸夜夜操| 国内精品久久久久久久久久影视| 欧美激情视频一区| 午夜一区二区三区|