环球电气之家-午夜精彩视频-中国专业电气电子产品行业服务网站!

產品分類

當前位置: 首頁 > 工業電氣產品 > 電氣附件 > 冷壓端子

類型分類:
科普知識
數據分類:
冷壓端子

Windows Embedded Compact 實時調度介紹

發布日期:2022-04-27 點擊率:126 品牌:EMB

  • 關鍵詞: Windows Embedded Compact
  • 摘要:本文介紹了Windows Embedded Compact 實時調度的定義、軟硬件平臺搭建及程序運行設置等,可供學習參考。

  實時調度機制(Real-Time Scheduler)是Windows Embedded Compact區別于其他所有Windows系統的最顯著特性,同時也是開發嵌入式系統時需要著重考慮的部分。在工程領域對“實時”的理解,我非常欣賞下面的定義:“一個實時系統必須要滿足明確的(受限的)響應時間約束或風險的嚴重后果,包括失效狀態”- 出自于Phillip A. Laplante Real-Time System Design and Analysis所以,一個實時系統中執行一個代碼必須在規定的時間約束內有明確的結果,否則就可能會導致系統失效,實時并不一定意味著快速處理能力。Windows Embedded Compact正符合上述對于實時系統的定義,因此為了進一步理解,我們首先來了解它的任務調度機制,WinCE的任務調度內核每隔1ms查詢一次現有任務并依據下面兩個原則來決定處理哪個任務:

a). 具有更高優先級的任務先被執行

b). 同樣優先級的任務按100ms時間間隔(或Task Quantum定義的時間間隔)循環輪流執行

對于第一條規則,WinCE提供256個優先級等級(0-255),數字越小優先級越高,因此0級為最高優先級,關于優先級的應用本文不做重點描述,請參考下面文章:

Real-TimePriority System Levels (Windows Embedded CE 6.0)

對于第二條規則,當多個待處理任務擁有同樣的優先級,將按照100ms時間間隔(可以根據Thread Quantum自定義)循環輪流執行。例如有N個同樣優先級的任務,當第一個運行了上述定義時間片(WinCE稱其為Quantum,如100ms),系統內核就會將其中斷然后執行第二個任務,依此類推,直到N個任務都執行過一個Quantum時間后再重新回到第一個任務執行,如此循環。任一個線程最多只能運行一個Quantum的時間,除非另一個更高優先級的任務需要占用CPU,則按照第一條規則,這個線程會被更高優先級任務占用。


下面我們通過兩個例子來驗證上述兩個規則,硬件平臺使用ToradexColibri VF61NXP/Freescale Vybrid Cortex-A5 )計算機模塊搭配Iris 載板,軟件使用Toradex提供的對應此平臺的工業級的WinCE6OSGPIO

a). 軟硬件平臺搭建請參考開發指南,如下圖所示

b). 驗證原理為在系統中啟動兩個任務,第一個任務驅動硬件某個GPIO輸出為低電平,而另一個則將同一個GPIO輸出為高電平;再將這兩個任務的優先級分別設置為相同和不同時候,通過觀測GPIO連接的示波器輸出來判定上述的兩個調度規則。關鍵代碼如下:創建兩個線程入口函數ThreadONThreadOFF,分別用來將選定的GPIO輸出為高電平和低電平,而從函數內部代碼可見會持續輸出高電平或者低電平,因此我們通過示波器觀察GPIO管腳的輸出即可得出目前是哪個函數在運行。

--------------------------------------------------------------------------------------------------------------

#include

#include"gpio.h"

// ===define constant pins / gpios ===

// SODIMMpin 101

uIo io1 =COLIBRI_PIN(101);

HANDLE hGpio;

HANDLE hThreadON,hThreadOFF;

//defineThreadON

DWORD WINAPI ThreadON( LPVOID lpParam ){

    //Set ThreadPriority

    CeSetThreadPriority(GetCurrentThread(), 100);

    Sleep(5); //Allowthe orther Thread to configure it's PRIO

    //FNFINITELOCKING LOOP

    while(1){

        //Set GPIOlogic high

        Gpio_SetLevel(hGpio, io1, ioHigh);

    }

    return 0;

}

//defineThreadOFF

DWORD WINAPI ThreadOFF( LPVOID lpParam ){

    //Set ThreadPriority

    CeSetThreadPriority(GetCurrentThread(),100);

    //FNFINITELOCKING LOOP

    while(1){

        //Set GPIOlogic low

        Gpio_SetLevel(hGpio, io1, ioLow);

    }

    return 0;

}

//=============================================================================

//Application Entry Point

//

// Thesimple error handling using ASSERT statements is only effective when

// theapplication is run as a debug version.

//=============================================================================

int wmain(int argc, _TCHAR* argv[])  

{

   BOOL success;

   // === InitializeGPIO library. ===

   // We don't useregistry-based  configuration, thus wecan

   // pass NULL goGpio_Init()

   hGpio = Gpio_Init(NULL);  

   ASSERT(hGpio != 0);

   success = Gpio_Open(hGpio);

   ASSERT (success);

   // Configure thepin to act as GPIO (as opposed to an Alternate function)

   // Set it toOutput,  High

   Gpio_ConfigureAsGpio(hGpio, io1);

   Gpio_SetDir         (hGpio, io1, ioOutput);

   Gpio_SetLevel       (hGpio, io1, ioHigh);

   CeSetThreadPriority(GetCurrentThread(),99);

    //Create twoconcorrent Threads, one set GPIO to High and other to Low

    hThreadON = CreateThread(NULL, 0, ThreadON,NULL, 0, NULL);

   hThreadOFF = CreateThread(0, 0, ThreadOFF,NULL, 0, NULL);

   

//Time to finish the Program

Sleep(3000);

   return(TRUE);

}

--------------------------------------------------------------------------------------------------------------

c). 首先我們來測試第二條規則,將兩個任務的優先級設置為相同值(如上面代碼為100),運行程序后示波器圖形如下,可以看到每隔100ms GPIO輸出循環交替變化,完全符合我們第二條規則。

d). 然后我們再來測試第一條規則,如下修改一個任務(ThreadON)的代碼,將其優先級提高到99,另外在循環中增加一個5ms的暫停時間。

--------------------------------------------------------------------------------------------------------------

DWORD WINAPI ThreadON( LPVOID lpParam ){

    //Set ThreadPriority

    CeSetThreadPriority(GetCurrentThread(), 99);

    Sleep(5); //Allowthe orther Thread to configure it's PRIO

    //FNFINITELOCKING LOOP

    while(1){

        //Set GPIOlogic high

        Gpio_SetLevel(hGpio, io1, ioHigh);

              Sleep(5);

    }

    return 0;

}

--------------------------------------------------------------------------------------------------------------

e). 運行修改后的程序,示波器輸出如下結果,每隔7ms左右有一個拉高的脈沖,表示每次當高優先級的任務(ThreadON)從5ms 暫停時間恢復后,都會中斷低優先級任務的執行,這樣完全符合第一條規則的描述。

  當然,以上所有測試都是基于單核心系統,從Windows Embedded Compact 7 開始,WinCE內核提供了對多核心處理器的支持,同時也有一個新的屬性“affinity”來定義哪一個核心來執行哪一個線程,所以如果在多核系統和WEC7上面運行上述例子,同時并未限定線程在同一個核心上面執行,則結果會不同因為兩個線程會同時在不同核心上面運行。當然,其實正常應用情況下我們是不建議設置“affinity”參數的,因為這樣就無法使得內核調度來自動安排線程在最先空閑的核心上面運行,達不到降低延遲提高系統性能的要求了。

  實時系統目前在包括工業自動化,機器人和醫療領域等嵌入式設備上面有廣泛的需求,因此了解WinCE的實時調度工作機制以及如何使用線程可以讓我們的應用程序實時穩定的執行,讓我們更高效可靠的利用WinCE搭建我們的實時系統!

下一篇: PLC、DCS、FCS三大控

上一篇: 索爾維全系列Solef?PV

推薦產品

更多
主站蜘蛛池模板: 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 北京企业宣传片拍摄_公司宣传片制作-广告短视频制作_北京宣传片拍摄公司 | 儿童语言障碍训练-武汉优佳加感统文化发展有限公司 | 楼承板设备-楼承板成型机-免浇筑楼承板机器厂家-捡来 | 物流之家新闻网-最新物流新闻|物流资讯|物流政策|物流网-匡匡奈斯物流科技 | 护腰带生产厂家_磁石_医用_热压护腰_登山护膝_背姿矫正带_保健护具_医疗护具-衡水港盛 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 产业规划_产业园区规划-产业投资选址及规划招商托管一体化服务商-中机院产业园区规划网 | 农产品溯源系统_农产品质量安全追溯系统_溯源系统 | 断桥铝破碎机_铝合金破碎机_废铁金属破碎机-河南鑫世昌机械制造有限公司 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 广西教师资格网-广西教师资格证考试网 | 数显水浴恒温振荡器-分液漏斗萃取振荡器-常州市凯航仪器有限公司 | 喷砂机厂家_自动除锈抛丸机价格-成都泰盛吉自动化喷砂设备 | 阳光1号桔柚_无核沃柑_柑橘新品种枝条苗木批发 - 苧金网 | 14米地磅厂家价价格,150吨地磅厂家价格-百科 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 校园文化空间设计-数字化|中医文化空间设计-党建|法治廉政主题文化空间施工-山东锐尚文化传播公司 | 14米地磅厂家价价格,150吨地磅厂家价格-百科 | 压力控制器,差压控制器,温度控制器,防爆压力控制器,防爆温度控制器,防爆差压控制器-常州天利智能控制股份有限公司 | 北京乾茂兴业科技发展有限公司 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 铆钉机|旋铆机|东莞旋铆机厂家|鸿佰专业生产气压/油压/自动铆钉机 | GEDORE扭力螺丝刀-GORDON防静电刷-CHEMTRONICS吸锡线-上海卓君电子有限公司 | 乐泰胶水_loctite_乐泰胶_汉高乐泰授权(中国)总代理-鑫华良供应链 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 磁力抛光研磨机_超声波清洗机厂家_去毛刺设备-中锐达数控 |