chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Windows CE. net外部中斷程序驅(qū)動(dòng)的開發(fā)方法

電子設(shè)計(jì) ? 來源:郭婷 ? 作者:電子設(shè)計(jì) ? 2019-07-23 08:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引 言

AD7854是一款高速、低功耗的12位并行接口模數(shù)轉(zhuǎn)換芯片,其工作電壓范圍是3~5 V,采樣頻率最高為200 kHz。由于AD7854在正常的工作模式下功耗為5.4mW,在節(jié)電模式下功耗為3.6μW,因此在便攜式設(shè)備中得到廣泛的應(yīng)用。當(dāng)前,在先進(jìn)的便攜設(shè)備中,大量引進(jìn)嵌入式操作系統(tǒng)對(duì)系統(tǒng)資源進(jìn)行管理,因此開發(fā)硬件設(shè)備的驅(qū)動(dòng)成為構(gòu)建便攜式系統(tǒng)的一個(gè)重要工作。S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,采用0.18um制造工藝的32位微控制器。該處理器擁有:獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。S3C2410處理器最高可運(yùn)行在203MHz。核心板的尺寸僅相當(dāng)于名片的2/3大小,尺寸如此小巧的嵌入式核心板是國(guó)內(nèi)首創(chuàng)。開發(fā)商可以充分發(fā)揮想象力,設(shè)計(jì)制造出小體積,高性能的嵌入式應(yīng)用產(chǎn)品。

1 AD7854與S3C2410的擴(kuò)展設(shè)計(jì)

為確保AD7854在S3C2410的控制下完成采樣和模數(shù)轉(zhuǎn)換,必須合理地設(shè)計(jì)接口電路。AD7854為12位并行模數(shù)轉(zhuǎn)換芯片,S3C2410是32位微處理器,因此,一次讀操作即可完成AD7854轉(zhuǎn)換結(jié)果的讀取。但是,對(duì)于AD7854校準(zhǔn)寄存器的讀操作以及對(duì)各寄存器的寫操作都需要2個(gè)讀或?qū)懖僮鳌?/p>

為了提高S3C2410的驅(qū)動(dòng)能力,在S3C2410與外設(shè)之間加入了一個(gè)雙向數(shù)據(jù)緩沖器74LVCl6245。設(shè)計(jì)的A/D轉(zhuǎn)換接口電路原理如圖1所示。

Windows CE. net外部中斷程序驅(qū)動(dòng)的開發(fā)方法

2 WindOWS CE.Ret設(shè)備驅(qū)動(dòng)簡(jiǎn)介

Windows CE.net設(shè)備驅(qū)動(dòng)模型主要有兩種:本機(jī)設(shè)備驅(qū)動(dòng)與流接口設(shè)備驅(qū)動(dòng)。不同的驅(qū)動(dòng)模型只能通過它們的軟件接口來區(qū)別,而不是它們適用的設(shè)備。驅(qū)動(dòng)程序模型決定其輸出的軟件接口。

本機(jī)設(shè)備驅(qū)動(dòng)程序適于集成到基于Windows CE.net平臺(tái)的設(shè)備,如通用LED驅(qū)動(dòng)電源驅(qū)動(dòng)等。每種本機(jī)設(shè)備驅(qū)動(dòng)程序都有精確的要求和特殊的目的,微軟提供了定制接口的方式來支持內(nèi)部設(shè)備驅(qū)動(dòng)程序。一般來說,只有OEM開發(fā)商對(duì)本機(jī)設(shè)備驅(qū)動(dòng)程序感興趣,而獨(dú)立硬件銷售商只開發(fā)附加的硬件驅(qū)動(dòng)程序。

流接口設(shè)備驅(qū)動(dòng)程序是一般類型的設(shè)備驅(qū)動(dòng)程序。它表現(xiàn)為用戶一級(jí)的動(dòng)態(tài)DLL,動(dòng)態(tài)鏈接庫(kù)英文為DLL,是Dynamic Link Library 的縮寫形式,DLL 是一個(gè)包含可由多個(gè)程序同時(shí)使用的代碼和數(shù)據(jù)的庫(kù),DLL不是可執(zhí)行文件。動(dòng)態(tài)鏈接提供了一種方法,使進(jìn)程可以調(diào)用不屬于其可執(zhí)行代碼的函數(shù)。函數(shù)的可執(zhí)行代碼位于一個(gè) DLL 中,該 DLL 包含一個(gè)或多個(gè)已被編譯、鏈接并與使用它們的進(jìn)程分開存儲(chǔ)的函數(shù)。DLL 還有助于共享數(shù)據(jù)和資源。多個(gè)應(yīng)用程序可同時(shí)訪問內(nèi)存中單個(gè)DLL 副本的內(nèi)容。DLL 是一個(gè)包含可由多個(gè)程序同時(shí)使用的代碼和數(shù)據(jù)的庫(kù)。用來導(dǎo)出一組固定的函數(shù),稱為“流接口函數(shù)”。應(yīng)用程序可以通過文件系統(tǒng)接口函數(shù)(API)訪問這些接口函數(shù),從而調(diào)用驅(qū)動(dòng)程序,驅(qū)動(dòng)硬件設(shè)備進(jìn)行工作。在流接口驅(qū)動(dòng)程序中,驅(qū)動(dòng)程序負(fù)責(zé)把外設(shè)抽象成一個(gè)文件,而應(yīng)用程序則使用操作系統(tǒng)提供的API對(duì)外設(shè)進(jìn)行訪問。流接口驅(qū)動(dòng)程序幾乎支持任何類型的、可以連接到基于Windows CE.net平臺(tái)的外部設(shè)備,例如打印機(jī)、調(diào)制解調(diào)器等。流接口設(shè)備驅(qū)動(dòng)的體系結(jié)構(gòu)如圖2所示。

Windows CE. net外部中斷程序驅(qū)動(dòng)的開發(fā)方法

3 AD7854驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

由圖l所示的硬件電路可知,AD7854被直接映射到系統(tǒng)的內(nèi)存,它的物理地址是Oxl0000000,因此,該設(shè)備的驅(qū)動(dòng)程序可以選用單片式流接口設(shè)備驅(qū)動(dòng)模型。同時(shí)S3C24lO采用中斷的方式對(duì)AD7854的轉(zhuǎn)換結(jié)果進(jìn)行讀取并啟動(dòng)下一次的轉(zhuǎn)換。因此,開發(fā)A/D驅(qū)動(dòng)主要由兩個(gè)部分組成:內(nèi)核部分和流接口函數(shù)部分。內(nèi)核部分主要完成中斷的處理,包括物理中斷到邏輯中斷的轉(zhuǎn)換,中斷的使能、禁止,喚醒中斷服務(wù)線程等工作。

3.1 AD7854中斷在WindOWS CE中的處理

內(nèi)核部分主要是修改Windows CE.net中與中斷相關(guān)的內(nèi)核文件,完成物理中斷到邏輯中斷的映射。由圖1可知,AD7854占用外部中斷0(EINTO)。為了讓操作系統(tǒng)能夠處理外部中斷O,必須對(duì)其關(guān)于中斷處理的內(nèi)核代碼進(jìn)行修改。主要修改的內(nèi)核文件如下:

①修改%WIN(2ER()0T%\PLATFORM\SMDK2410\INC\oalintr.h文件;

②修改%WINCEROOT%\PLATFORM\smdk2410\kernel\hal\arm\armint.c文件中的OEMInterrupt Han—dler()函數(shù);

③在中斷服務(wù)線程(IST)中調(diào)用InterruptEnable()、InterruptDisable()、InterruptDone()等函數(shù)對(duì)中斷進(jìn)行操作時(shí),系統(tǒng)內(nèi)核調(diào)用OEMInterTuptEnable()、()EMInter—ruptDisable()、()EMInterruptDone(),對(duì)中斷寄存器進(jìn)行設(shè)置,完成中斷允許、中斷禁止和中斷完成操作。對(duì)這3個(gè)OEM函數(shù)的修改,是通過修改%WINCERO0T%\PLATFORM\smdk2410\kernel\hal\cfw.c文件完成的。

內(nèi)核文件的修改可以參照內(nèi)核文件函數(shù)的具體實(shí)現(xiàn)來完成。經(jīng)過對(duì)Windows CE.net內(nèi)核文件的修改,完成了物理中斷EINTO到邏輯中斷號(hào)SYSINTR_ADC的映射。

3.2 AD7854流接口函數(shù)的實(shí)現(xiàn)

流接口驅(qū)動(dòng)程序?qū)嵸|(zhì)上就是一個(gè)動(dòng)態(tài)鏈接庫(kù),在Windows CE.net中,流接口函數(shù)一共有10個(gè)。這些流接口函數(shù)并不需要每個(gè)都要有具體的實(shí)現(xiàn)代碼,關(guān)鍵是要根據(jù)設(shè)備的具體工作流程來完成相應(yīng)的接口函數(shù)。本設(shè)計(jì)中開發(fā)的AD7854的驅(qū)動(dòng)程序主要實(shí)現(xiàn)的接口函數(shù)為:XXX_Deinit、XXX_Init、XXX_Open、XXX_Close、XXX_Read、XXX_Write。XXX為設(shè)備文件名的前綴,由于開發(fā)的是模數(shù)轉(zhuǎn)換芯片的驅(qū)動(dòng),故在此將該前綴命名為“ADC”。以下具體介紹在Platform Builder開發(fā)環(huán)境下AD7854驅(qū)動(dòng)的開發(fā)過程。

首先,在Platform Builder4.2開發(fā)環(huán)境下為AD7854的驅(qū)動(dòng)建立一個(gè)WCE Dynamic—Link Library工程,隨后就可以在該工程下完成各流接口函數(shù)。

(1)AD7854的數(shù)據(jù)結(jié)構(gòu)

在編寫流接口函數(shù)之前,應(yīng)該定義設(shè)備的數(shù)據(jù)結(jié)構(gòu),這是對(duì)現(xiàn)實(shí)設(shè)備的抽象。根據(jù)AD7854在操作中所涉及的CPU相關(guān)存儲(chǔ)器以及AD7854內(nèi)部操作的需要,現(xiàn)將AD7854抽象成以下結(jié)構(gòu)類型:

Windows CE. net外部中斷程序驅(qū)動(dòng)的開發(fā)方法

AD7854的數(shù)據(jù)結(jié)構(gòu)可以看作是與AD7854相關(guān)的邏輯體。通過WindowsCE.net提供的內(nèi)存映射函數(shù)VirtualAl—loe()和VirtualCopy(),可以將邏輯體與具體的物理地址關(guān)聯(lián)起來,完成對(duì)物理存儲(chǔ)器的設(shè)置。

(2)流接口函數(shù)的開發(fā)

流接口函數(shù)為應(yīng)用程序操作硬件提供統(tǒng)一的接口,完成對(duì)硬件的抽象工作。一個(gè)流接口函數(shù)實(shí)質(zhì)上就是提供某一特定功能的模塊,根據(jù)硬件的不同,各接口函數(shù)實(shí)現(xiàn)的內(nèi)容千差萬(wàn)別。有的接口函數(shù)需要很多的代碼,有的就是一個(gè)空的函數(shù)體。本文結(jié)合硬件具體介紹其實(shí)現(xiàn)過程:

①PADC_CONTEXT ADC_Init(LPCTSTR pCon—text,LPCVOID lpvBusContext)。該接口函數(shù)在驅(qū)動(dòng)程序加載時(shí),由設(shè)備管理器調(diào)用。在該函數(shù)中主要完成硬件初始化工作。

ADC_Init函數(shù)需按照一定的順序完成驅(qū)動(dòng)的初始化工作,其內(nèi)部函數(shù)的調(diào)用順序如圖3所示。ADC_Init調(diào)用成功以后,將返回AD7854結(jié)構(gòu)體的首地址——pADC,同時(shí)表明該驅(qū)動(dòng)加載成功。

②DWORD ADC_Read(PADC_CONTEXT pADC,PUCHAR pBuffer,DWORD Count)。該接口函數(shù)主要完成對(duì)AD7854.的讀操作,代碼是對(duì)操作的抽象。為了更好地體現(xiàn)開發(fā)過程,首先介紹一下AD7854的讀操作過程。AD7854一次輸出16位數(shù)據(jù),分成2次輸出(高8位、低8位)。在讀寫時(shí)序中,除了通過對(duì)CPU的存儲(chǔ)寄存器的相關(guān)配置以滿足時(shí)間上的要求外,另一個(gè)重要的地方就是注意滿足高字節(jié)使能輸出引腳(HBEN)的需要。具體是在輸出高字節(jié)時(shí),該引腳應(yīng)輸入高電平。AD7854輸出一次16位數(shù)據(jù)時(shí)有兩種輸出方式:其一就是高8位先輸出,然后是低8位輸出(與此相對(duì)應(yīng),HBEN引腳在AD7854讀時(shí)序中第1個(gè)字節(jié)為高電平,第2個(gè)字節(jié)為低電平);其二剛好相反。

由圖3可知,HBEN的電平由S3C2410的地址線O確定,因此在一個(gè)AD7854的讀時(shí)序中地址線O應(yīng)改變一次自己的狀態(tài)。同時(shí)AD7854的片選與LnGCS2相連,這也就構(gòu)成了AD7854的兩個(gè)讀物理地址:0x1000 0000和0x1000 0001。AD7854的讀周期時(shí)序如圖4所示。

Windows CE. net外部中斷程序驅(qū)動(dòng)的開發(fā)方法

Windows CE. net外部中斷程序驅(qū)動(dòng)的開發(fā)方法

由此可開發(fā)AD7854讀接口函數(shù),具體代碼如下:

Windows CE. net外部中斷程序驅(qū)動(dòng)的開發(fā)方法

寫接口函數(shù)DWORD ADC_Write(PADC_CON—TEXT pADC,PUCHAR pBuffer,DWORD Count),主要完成對(duì)。AD7854的寫操作。AD7854的寫操作過程和讀操作很相似,代碼的實(shí)現(xiàn)過程也基本相同,在此就不再贅述。

編寫導(dǎo)出函數(shù)和注冊(cè)表文件,編譯生成d11文件,通過PB將其制作成CEC文件,在定制操作系統(tǒng)時(shí)可以將驅(qū)動(dòng)程序加入操作系統(tǒng)中。

4 結(jié) 論

Windows CE .NET 是 Windows CE 3.0 的后續(xù)產(chǎn)品,它不僅是一個(gè)功能強(qiáng)勁的實(shí)時(shí)嵌入式操作系統(tǒng),而且提供了眾多強(qiáng)大工具,允許用戶利用它快速開發(fā)出下一代的智能化小體積連接設(shè)備。借助于完善的操作系統(tǒng)功能和開發(fā)工具, Windows CE .NET 為開發(fā)人員提供了構(gòu)建、調(diào)試和部署基于 Windows CE.NET 的定制設(shè)備所需的一切特性。平臺(tái)開發(fā)工具 Platform Builder 是一個(gè)完全集成的開發(fā)環(huán)境( IDE ),并且包括一個(gè)軟件開發(fā)工具包( SDK )導(dǎo)出工具。 Windows CE .NET 支持 Microsoft eMbedded Visual C++? 和 Microsoft Visual Studio? .NET ,為面向 Microsoft .NET Compact Framework ( Microsoft .NET Framework 的一個(gè)子集)的 Web 服務(wù)和應(yīng)用程序開發(fā)提供了一個(gè)完整的開發(fā)環(huán)境。利用這些工具,開發(fā)人員可以迅速開發(fā)出能夠在最新硬件上運(yùn)行各種應(yīng)用程序的智能化設(shè)計(jì)。Windows CE.net是多任務(wù)實(shí)時(shí)嵌入式操作系統(tǒng),具有良好的圖形界面,實(shí)時(shí)性良好、功能強(qiáng)大,適用于工業(yè)控制領(lǐng)域。本文以AD7854的驅(qū)動(dòng)開發(fā)為例,闡述了Windows CE.net對(duì)外部中斷的處理過程和流接口驅(qū)動(dòng)的開發(fā)方法。該驅(qū)動(dòng)程序已成功應(yīng)用在所開發(fā)的作業(yè)環(huán)境監(jiān)測(cè)與評(píng)價(jià)系統(tǒng)中,在微氣候各指標(biāo)的監(jiān)測(cè)方面應(yīng)用效果良好。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    460

    文章

    52520

    瀏覽量

    440971
  • 嵌入式
    +關(guān)注

    關(guān)注

    5152

    文章

    19675

    瀏覽量

    317601
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7152

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Windows CE.Net下基于流驅(qū)動(dòng)的AD驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

    驅(qū)動(dòng)程序是連接操作系統(tǒng)和硬件的橋梁。文中作者主要討論在Windows CE.Net 操作系統(tǒng)下,如何設(shè)計(jì)實(shí)現(xiàn)S3C2410芯片具有AD接口的驅(qū)動(dòng)程序;詳細(xì)介紹
    發(fā)表于 08-25 09:18 ?19次下載

    Windows CE.NET平臺(tái)流接口USB驅(qū)動(dòng)的設(shè)計(jì)

    在介紹了USB 系統(tǒng)的軟件結(jié)構(gòu)的基礎(chǔ)上,詳細(xì)介紹了如何在Windows CE.NET 平臺(tái)上進(jìn)行流接口的USB 驅(qū)動(dòng)程序開發(fā)。
    發(fā)表于 09-01 11:32 ?3次下載

    Windows CE.NET 下ADC驅(qū)動(dòng)開發(fā)設(shè)計(jì)

    本文利用工具Platform Builder、以ADC 驅(qū)動(dòng)程序為例,探討Windows CE.net 下的驅(qū)動(dòng)程序開發(fā),以及向平臺(tái)添加AD
    發(fā)表于 01-06 16:13 ?12次下載

    Windows CE.NET的定制和裁剪

    介紹了微軟嵌入式操作系統(tǒng)Windows CE. NET的體系結(jié)構(gòu)。論述了Windows CE. NET
    發(fā)表于 06-27 10:51 ?41次下載
    <b class='flag-5'>Windows</b> <b class='flag-5'>CE.NET</b>的定制和裁剪

    基于S3C2410的Windows CE驅(qū)動(dòng)開發(fā)

    文中闡述了設(shè)備驅(qū)動(dòng)程序的概念和結(jié)構(gòu),介紹了Windows CE. NET 環(huán)境下開發(fā)驅(qū)動(dòng)程序的特
    發(fā)表于 06-27 16:17 ?54次下載
    基于S3C2410的<b class='flag-5'>Windows</b> <b class='flag-5'>CE</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>

    基于Windows CE.NET數(shù)控系統(tǒng)的插補(bǔ)控制

    主要討論了Windows CE.NET下的中斷機(jī)制與驅(qū)動(dòng)程序開發(fā),重點(diǎn)闡述了定時(shí)器驅(qū)動(dòng)程序
    發(fā)表于 06-27 16:20 ?34次下載
    基于<b class='flag-5'>Windows</b> <b class='flag-5'>CE.NET</b>數(shù)控系統(tǒng)的插補(bǔ)控制

    Windows CE NET的定制和裁剪

    本文介紹了 微軟嵌入式操作系統(tǒng) W indows CE.NET的體系結(jié)構(gòu)。論述了 Windows CE. NET的創(chuàng)建過程 包括系統(tǒng)內(nèi)核的定制和裁剪以及如何向定制平臺(tái)添加自己的特色 。
    發(fā)表于 04-18 10:02 ?0次下載

    Windows CEnet設(shè)備驅(qū)動(dòng)程序開發(fā)研究

    本文介紹了Windows CE. net的平臺(tái)結(jié)構(gòu) 闡述了Windows CE驅(qū)動(dòng)的系統(tǒng)結(jié)構(gòu) 對(duì)
    發(fā)表于 04-18 10:02 ?0次下載

    Windows CENET中斷架構(gòu)分析和高速AD驅(qū)動(dòng)程序開發(fā)

    本文分析了Windows CE.NET嵌入式實(shí)時(shí)系統(tǒng)的中斷架構(gòu)和流式驅(qū)動(dòng)架構(gòu) 及其設(shè)備驅(qū)動(dòng)程序開發(fā)
    發(fā)表于 04-18 10:02 ?0次下載

    Windows CE驅(qū)動(dòng)程序開發(fā)

    不同的嵌入式系統(tǒng)硬件平臺(tái),往往有其獨(dú)有或特殊的設(shè)備,而這些設(shè)備的Windows CE驅(qū)動(dòng)程序設(shè)計(jì)問題是開發(fā)人員經(jīng)常遇到的。本文著重闡述了Window
    發(fā)表于 04-18 10:13 ?0次下載

    Windows CE設(shè)備驅(qū)動(dòng)程序開發(fā)

    本文介紹了 Windows CE 體系結(jié)構(gòu)和開發(fā) wince 設(shè)備驅(qū)動(dòng)程序的過程,闡述了設(shè)備驅(qū)動(dòng)程序模型、設(shè)備
    發(fā)表于 04-18 10:13 ?0次下載

    基于S3C2410的Windows CE驅(qū)動(dòng)開發(fā)

    文中闡述了設(shè)備驅(qū)動(dòng)程序的概念和結(jié)構(gòu) 介紹了 Windows CE. NET 環(huán)境下開發(fā)驅(qū)動(dòng)程序
    發(fā)表于 04-18 10:46 ?0次下載

    基于Windows CE.NET的設(shè)備驅(qū)動(dòng)程序開發(fā)

    本文闡述了設(shè)備驅(qū)動(dòng)程序的概念和結(jié)構(gòu) 介紹了 Windows CE. NET環(huán)境下開發(fā)驅(qū)動(dòng)程序的特
    發(fā)表于 04-18 11:28 ?0次下載

    基于WINDOWS CE的開放式數(shù)控系統(tǒng)設(shè)備驅(qū)動(dòng)程序開發(fā)

    本文討論了基于Windows CE. NET的開放式數(shù)控系統(tǒng)的一項(xiàng)關(guān)鍵技術(shù)。首先分析了 WindowsCE.NET的系統(tǒng)結(jié)構(gòu)并詳細(xì)闡述其中斷
    發(fā)表于 04-18 11:28 ?0次下載

    Windows CE.Net系統(tǒng)定制與驅(qū)動(dòng)開發(fā)

    本文檔內(nèi)容介紹了Windows CE.Net系統(tǒng)定制與驅(qū)動(dòng)開發(fā),包含了操作步驟及操作指南。
    發(fā)表于 02-05 16:00 ?10次下載